有序表的增删改查操作,数据结构顺序表的增删改查

  有序表的增删改查操作,数据结构顺序表的增删改查

  永远的神干货盘点

  @TOC

  一、线性表

  1.线性表的概念

  具有n个相同特性的数据元素的有限序列,顺序表,链表,栈和队列都是

  常见的线性表

  2.顺序表的概念

  顺序表是物理地址连续的储存单元依次存储数据元素的线性结构,

  一般采用数组储存,在数组上完成增删查改。

  分为静态与动态两种:

  静态:使用定长数组实现

  动态:使用动态开辟的数组实现

  这两者跟之前的通讯录的有点相似

  可以看这里:通讯录

  3.顺序表的优缺点

  1.支持随机访问

  1.中间插入或者头插时,会很慢,要挪动数据,时间复杂度为O(N)

  2.虽然说动态顺序表已经做出优化,但扩容时,依旧会造成一定的空间浪费

  二、顺序表的实现

  1.函数的定义和结构体的创建-联系人。h

  #包含标准库

  #包含标准视频

  整型类型;

  结构s

  类型*数据;//动态开辟

  (同Internationalorganizations)国际组织大小;//记录数量

  int cap//容量大小

  void SeqListinit(struct s * p);

  void seqlistbusback(struct s * p,int x);

  void SeqListprint(struct s * p);

  void SeqListpopBack(struct s * p);

  void SeqListpushFront(struct s* p,int x);

  void SeqListpopFront(struct s * p);

  void check cap(struct s * p);

  int search(struct s* p,int pos);

  void SeqListInsert(struct s* p,int pos,int x);

  void SeqListErase(struct s* p,int pos);

  void seqListdestory(struct s * p);

  2.函数的调用-测试c

  #包含"联系人1.h "

  int main()

  结构标准普尔;

  SeqListinit(

  seqlistbusback(p,1);

  seqlistbusback(p,2);

  seqlistbusback(p,3);

  SeqListpushBack(第四页);

  SeqListprint(

  SeqListpopBack(

  SeqListprint(

  SeqListpushFront( p,5);

  SeqListprint(

  SeqListpopFront(

  SeqListprint(

  int pos=search( p,3);

  SeqListInsert( p,pos,5);

  SeqListprint(

  int pos2=search( p,5);

  序列酶(p,位置2);

  SeqListprint(

  seqListdestory(

  返回0;

  }

  3.动态顺序表的接口

  void seqlistbusback(struct s * p,int x)

  if(p- size==p- cap)//如果此时的数量等于容量

  type * str=(type *)malloc(sizeof(type)* 2 * p-cap);//扩容2倍

  if(str!=空)

  p-data=str;

  p- cap=2*p-

  p-data[p-size]=x;

  p-size;

  }

  void SeqListpopBack(struct s * p)//尾删

  p-size-;

  }

  void SeqListpushFront(struct s* p,int x)//同理在物理上是连续的

  {//所以在头插入数据,就必须将所有数据向后移

  int I=0;

  if (p- size==p- cap)//扩容

  type* str=(type*)realloc(p- data,sizeof(type)* 2 * p-cap);

  if (str!=空)

  p-data=str;

  p- cap=2 * p-

  for(I=p-size;我我- )//数据向后移

  p-data[I 1]=p-data[I];

  p-data[0]=x;

  p-size;

  }

  void SeqListpopFront(struct s * p)//头删

  int I=0;//直接将第二个数据赋值给第一个数据即可

  for(I=0;I p-size-1;我)

  p-data[I]=p-data[I 1];

  p-size-;

  }

  5.查找指定位置

  int search(struct s* p,int pos)//查找指定位置

  int I=0;

  for(I=0;I p-size;i )//如果找到这个数返回这个数的下标

  如果(p数据[我]==位置)

  返回我;

  }

  6.指定插

  void SeqListInsert(struct s* p,int pos,int x)//指定插

  if (p- size==p- cap)//扩容

  type* str=(type*)realloc(p- data,sizeof(type)* 2 * p-cap);

  if (str!=空)

  p-data=str;

  p- cap=2 * p-

  int I=0;

  for(I=p-size;i=位置我- )//从后往前找这个数,并将数依次向后移

  p-data[I 1]=p-data[I];

  p-data[pos]=x;

  p-size;

  }

  7.指定删

  void SeqListErase(struct s* p,int pos)//指定删

  int I=0;

  for(I=pos;I p-size-1;i )//从前往后,从要删除的数开始,把后面的数赋值给前面的数

  p-data[I]=p-data[I 1];

  p-size-;

  }

  8.初始化

  void SeqListinit(struct s* p)//初始化

  p-cap=5;//假设容量为5

  p-size=0;

  p-data=(type *)malloc(p-cap * sizeof(type));

  }

  9.内存销毁

  void seqListdestory(struct s * p)//内存销毁

  免费(p-data);//动态开辟要记得销毁,否则会造成内存泄漏

  p-data=NULL;

  p-size=0;

  p-cap=0;

  }

  。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • mysql复合索引和组合索引,mysql组合索引数据结构
  • mysql复合索引和组合索引,mysql组合索引数据结构,Mysql之组合索引方法详解
  • mysql复合索引和组合索引,mysql复合索引数据结构
  • mysql复合索引和组合索引,mysql复合索引数据结构,MySQL的复合索引总结
  • b+树 多路搜索树,数据结构中树的分类
  • b+树 多路搜索树,数据结构中树的分类,数据结构-树(三):多路搜索树B树、B+树
  • avl树的构造,avl树特性,数据结构之AVL树详解
  • 数据结构c语言哈夫曼树,c语言哈夫曼树的构造,使用C语言详解霍夫曼树数据结构
  • c语言数据结构算法编程库,数据结构 c语言中文网
  • c语言数据结构算法编程库,数据结构 c语言中文网,C语言编程数据结构基础详解小白篇
  • c++纸牌游戏,数据结构纸牌游戏c语言
  • c++纸牌游戏,数据结构纸牌游戏c语言,C语言实战之纸牌游戏
  • ,,c#解析jobject的数据结构
  • ,,javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
  • ,,Java 数据结构与算法系列精讲之背包问题
  • 留言与评论(共有 条评论)
       
    验证码: