当前位置: 首页 > news >正文

珠海建设工程监督站网站学校没有网站

珠海建设工程监督站网站,学校没有网站,网站建设流程及规范,为了推广公众号可以采取的方法有文章目录线性表顺序表接口实现尾插尾删头插头删指定位置插入指定位置删除练习线性表 线性表#xff08;linear list#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构#xff0c;常见的线性表#xff1a;顺序表、链表、栈、队列… 文章目录线性表顺序表接口实现尾插尾删头插头删指定位置插入指定位置删除练习线性表 线性表linear list是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构常见的线性表顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构也就说是连续的一条直线。但是在物理结构上并不一定是连续的线性表在物理上存储时通常以数组和链式结构的形式存储 顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构一般情况下采用数组存储。在数组上完成数据的增删查改 顺序表就是数组但是是在数组的基础上另外还要求数据是从头开始存储 并且数据是连续存储的不能跳跃间隔 顺序表一般可以分为 静态顺序表使用定长数组存储元素动态顺序表使用动态开辟的数组存储 接口实现 尾插 typedef struct SeqList {SLDaTaType * a;int size; // 数组中存了多少个数int capacity; //数组实际容量个数 }SL;void SeqListPushBack(SL* ps, SLDaTaType x) //尾插 {assert(ps);//空间不足则扩容 if (ps-capacity ps-size){int newcapacity ps-capacity 0 ? 4 : ps-capacity * 2; // 若空间为0 就放4个字节 否则capacity *2 SLDaTaType * tmp ( SLDaTaType* )realloc(ps-a, newcapacity * sizeof(SLDaTaType));if (tmp NULL) //开辟失败{printf(realloc fail \n);exit(-1); }ps-a tmp;ps-capacity newcapacity;}ps-a[ps-size] x; // 空间足够 ps-size; } void SeqListDestory(SL* ps) //销毁 防止内存泄露 {assert(ps);free(ps-a);ps-a NULL; ps-size ps-capacity 0; } 尾删 void SeqListPopBack(SL* ps)// 尾删 {assert(ps);// ps-a[ps-size - 1] 0;assert(ps-size 0);ps-size--; }头插 最后一个数向后挪动 void SeqListPushFront(SL* ps, SLDaTaType x) // 头插 {assert(ps);// 挪动 int end ps-size - 1;while (end 0){ps-a[end 1] ps-a[end];end--;}ps-a[0] x;ps-size; }头删 void SeqListPopFront(SL* ps) // 头删 {assert(ps);assert(ps-size 0);//挪动数据int begin 1 ;while (beginps-size){ps-a[begin - 1] ps-a[begin];begin;}ps-size--; }找到了返回x位置下标 若没有找到返回-1 int SeqListFind(SL* ps, SLDaTaType x) {assert(ps);for (int i 0; i ps-size; i){if (ps-a[i] x){return i;}}return -1; }指定位置插入 void SeqListInsert(SL* ps, int pos, SLDaTaType x) // 指定位置插入 {assert(ps);assert(pos 0 pos ps-size);int end ps-size -1 ;SeqListCheckCapacity(ps); //防止后面空间不足 挪动的时候越界访问while (end pos){//挪动 ps-a[end 1] ps-a[end];end--;}//插入数据ps-a[pos] x;ps-size; }指定位置删除 void SeqListErase(SL* ps, int pos) // 指定位置删除 {assert(ps);assert(pos 0 pos ps-size);int begin pos 1;while (begin ps-size){ps-a[begin - 1] ps-a[begin];begin;}ps-size--; }练习 https://leetcode.cn/problems/remove-element/ 思路一 找到所有的val 一次挪动数据覆盖删除 时间复杂度最坏的情况是数组中绝大部分值是val甚至全部是val 假设数组中有N个数据 第一个数据是val 这时候需要挪动N-1 个元素 第二个数据是val 得挪动N-2个元素 依次类推 第n个数据是val 得挪动N-n 不难发现是一个等差数列 时间复杂度为ON^2) 思路二 依次遍历整个数组 把不是val 得值放到tmp 数组中 再把tmp数组得值拷贝到nums数组中 这样我们将时间复杂度优化到 ON 但是空间复杂度 为O(N) 思路三 src去找nums 数组中不是val 的值 放到dst 指向的位置中 再src dst 这样时间复杂度是ON 空间复杂度是O1 int removeElement(int* nums, int numsSize, int val) {int src 0;int dst 0 ;while (src numsSize ){if( nums[src]!val ){nums[dst] nums[src];src ;dst ; }else {src;}}return dst; }https://leetcode.cn/problems/remove-duplicates-from-sorted-array/ int removeDuplicates(int* nums, int numsSize) {if (numsSize0 ){return 0 ;}int j 1;int i 0;int dst 0 ;// j 没有越界 while( jnumsSize){// 判断 i和j是否相等 不相等就继续往下找if(nums[i] nums[j]){j ;}else // 不相等就把 nums[dst]nums[i]{nums[dst]nums[i];ij;dst;j;}}//j越界nums[dst]nums[i];dst;return dst ; // 返回dst的下标 }如果你觉得这篇文章对你有帮助不妨动动手指给点赞收藏加转发给鄃鳕一个大大的关注 你们的每一次支持都将转化为我前进的动力
http://www.hkea.cn/news/14424776/

相关文章:

  • 可信网站logo网站设计论文的题目
  • 网站空间 虚拟主机wordpress图片收费
  • 外贸公司网站制作公司idea做网站登录
  • 苏州手机网站建设公司世界杯大数据
  • 郑州腾讯网站建设手机做logo用什么网站
  • 建视频网站杭州比较好的景观设计公司
  • 视频娱乐模版网站购买wordpress百度自动
  • 网站图标怎么做邯郸做网站哪里好
  • 为什么要建立网站温州网站建设华一
  • 白塔网站建设wordpress注册链接失效
  • 海淘网站入口公司注册地址和办公地址
  • 广州做服装电商拿货的网站广州市外贸网站建设
  • 商务网站规划建设与管理试卷免费关键词挖掘网站
  • 骏域建网站合肥市科技中心网站
  • wordpress视频防盗链泉州百度推广排名优化
  • 网站用户注册怎么建校园网站建立
  • asp 网站 500做电商在什么网站吗
  • 济南城市建设集团网站wordpress 添加js代码
  • cpa广告联盟网站建设教程品牌好的佛山网站建设价格
  • 房地产企业网站建设wordpress编辑作者投稿者英文
  • 北京网站开发建设做化工类网站内容
  • 腾讯网站安全检测高中信息技术网站设计规划
  • 企业网站建设实训指导书网站建设是
  • ds216j做网站编程课哪个机构最好
  • 有哪些可以在线做app的网站有哪些上海松江区做网站的公司
  • 重庆化工建设信息网站苏州做网站的哪个公司比较好
  • 自学网站建设作业乌兰察布做网站公司
  • 旅游网站模板网站设计与建设系统
  • 宝路华手表官方网站广州短视频拍摄
  • 公司注册网站系统网站建设丶seo优化