顺序存储结构插入与删除
来源:互联网 发布:旅行水杯 知乎 编辑:程序博客网 时间:2024/05/20 12:51
插入操作
插入算法的思路:
- 如果插入位置不合理,抛出异常;
- 如果线性表长度大于等于数组的长度,则抛出异常或动态增加容量;
- 从最后一个元素开始向前遍历到第i个位置,分别将它们都向后移动一个位置;
- 将要插入的元素填入位置i处;
- 表长度加1;
返回TRUE。
实现代码如下:
/*初始条件:顺序线性表L已存在,1<=i<=ListLength(L),*//*操作结果:在L中第i个位置之前插入新的元素e,L的长度加1*/#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status;Status ListInsert(SqList *L,int i,ElemType e){ int k; if(L->length==MAXSIZE) /*顺序线性表已经满*/ return ERROR; if(i<1 || i>L->length+1) /*当i不在范围内*/ return ERROR; if(i<=L->length) /*若插入数据不在表尾*/ { for(k=L->length-1;k>=i-1;k--)/*将要插入位置后的数据元素向后移1位*/ L->data[k+1]=L->data[k]; } L->data[i-1]=e; /*将新元素插入*/ L->length++; /*表长度加1*/ return OK;}
删除操作
删除算法的思想:
- 如果删除位置不合理,则抛出异常;
- 取出要删除的元素;
- 从删除元素位置开始遍历到最后一个元素位置,分别将它们像前移动一个位置;
表长度减1。
实现代码如下:
/*初始条件:顺序线性表已经存在,1<=i<=ListLength(L)*//*操作结果:删除L的第i个元素,并用e返回其值,L的长度减1*/Status ListDelete(SqList *L,int i,ElemType *e){ int k; if(L->length==0) /*线性表为空*/ return ERROR; if(i<1 || i>L->length) /*删除位置不正确*/ return ERROR; *e=L->data[i-1]; if(i<L->length) /*如果删除不是最后位置*/ { for(k=i;k<L->length;k++)/*将删除位置后继元素前移*/ L->data[k-1]=L->data[k]; } L->length--; return OK;}
线性表存储结构的优缺点
优点:
- 无须为表示表中元素之间的逻辑关系而增加额外的存储空间;
- 可以快速的存取表中任一位置的元素。
缺点:
- 插入和删除操作需要移动大量的元素;
- 当线性表长度变化较大的时候,难以确定存储空间的容量;
- 造成存储空间的“碎片”。
1 0
- 顺序存储结构的插入与删除
- 顺序存储结构插入与删除
- 顺序存储结构的插入与删除
- 顺序存储结构的插入与删除
- 3.5.1 顺序存储结构的插入与删除
- 线性表的顺序存储结构及该结构的插入与删除
- 数据结构之线性表的顺序存储结构(数组)的插入与删除
- 数据结构与算法分析之顺序存储结构的建立,插入和删除操作
- 线性表顺序存储结构插入和删除
- 顺序存储---链表的插入与删除。
- 数据结构(一)-顺序存储结构的插入和删除:向指定位置的数组插入和删除元素
- 编程实现顺序存储结构和链式存储结构线性表的建立、查找、插入、删除等基本操作
- 线性表顺序存储结构插入和删除的实现 java
- 数据结构学习之路----------线性表顺序存储结构插入和删除节点平均移动次数
- 线性表的顺序存储结构(查找、插入、删除等)
- 顺序存储结构的基本操作实现(以类的方式实现)----插入、删除、查询
- 线性表的顺序存储表示时的插入与删除
- 数据结构与算法-线性表顺序存储结构插入操作的实现
- 使用备忘录模式实现游戏进度备份 C++
- 如何处理C++构造函数中的错误——兼谈不同语言的错误处理
- 中国经济到底缺什么
- 穷举法解决组合问题
- 第四周项目2——太乐了
- 顺序存储结构插入与删除
- 第四周 项目4 程序分析(1)
- 第四周项目训练1
- BZOJ2002弹飞绵羊
- 第三周1 小学生计算题的随机生成
- 第四周项目1-求最大公约数
- 第二周练习 委派任务
- 阻容降压
- 项目经理应该知道的四种谈判风格