数据结构线性表(一)之顺序存储结构思路
来源:互联网 发布:网络用语奶是什么意思 编辑:程序博客网 时间:2024/05/22 00:14
一:顺序存储,利用数组来实现顺序存储的.
注:线性表长度是线性表数据元素的个数,所以恒小于或等于数组长度
二:顺序存储结构代码
#define maxsize 20typedef int ElemType;//typedef struct //具体typedef用法见博客{ElemType data[maxsize]; int length; //线性表当前长度}SqList;
三:推算线性表的存储位置
LOC(ai+1)=LOC(ai)+c //LOC是获得该位置的函数,c指该变量占的存储单元
==>LOC(ai)=LOC(a1)+(i-1)*c
四:线性表与数组区别
线性表定义从1开始而数组从0开始,所以线性表的i位置就是数组i-1的位置
五:线性表获取元素操作
#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status/*status是函数类型,其值是函数结果状态代码,如ok等*/i>=1&&i<=ListLength操作结果:用e返回L中第i个数据元素的值Status GetElem(SqList L,int i,ElemType *e) //L为结构体变量{if(L.length==0||i<1||i>L.length)return ERROR; //return了之后就退出了*e=L.data[i-1];return ok;}
六:顺序存储结构插入操作
思路:1.插入位置是否合理
2.数组和线性表长度问题
3.表长加1
一个元素插入到线性表i位置
操作结构
Status ListInsert(SqList *L,int i,ElemType e){int k;if(L->length==maxsize)return ERROR;if(i<1||i>L->length+1)return ERROR;if(i<=L->length){for(k=L->length-1;k>=i-1;k--) //将数组i-1位置之后元素向后移1L->data[k+1]=L->data[k];}L->data[i-1]=e; //插入数据L->length++; //表长加1return OK;}
七.顺序存储结构删除操作
思路:1.删除位置是否合理
2.取出删除数据元素
3.从删除元素位置开始遍历到最后一个元素分别向前移动1个位置
4.表长减1
删除线性表i位置的数据元素
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++) //将数组i-1位置之后元素向前移一个位置L->data[k-1]=L->data[k];}L->length--; //表长减1return OK;}
八.线性表顺序存储结构缺点:
1.插入和删除操作需要移动大量元素
2.当线性表长度变化大时,难以确定存储空间的容量(数组大小)
3.造成存储空间的“碎片”
3 0
- 数据结构线性表(一)之顺序存储结构思路
- 数据结构:线性表之顺序存储结构
- 数据结构-线性表之顺序存储结构
- 【数据结构】线性表之顺序存储结构
- 数据结构之顺序存储结构线性表
- 数据结构:线性表之顺序存储结构
- 线性表数据结构解读(一)顺序存储结构ArrayList
- 数据结构(3)之线性表之顺序存储结构
- 数据结构之旅(一)顺序存储结构来实现线性表
- 数据结构:线性表(顺序存储结构)
- 数据结构之线性结构(顺序表)【一】
- 线性表(一)--顺序存储结构
- 数据结构一 线性表的顺序存储结构
- 大话数据结构一:线性表的顺序存储结构
- 大话数据结构一:线性表的顺序存储结构
- 线性表(一)之线性表的顺序存储结构
- 数据结构之线性表之顺序存储结构(3)
- 数据结构(一):线性表的顺序存储结构-顺序表的实现
- 日期类的实现
- 双边滤波算法介绍与实现
- flag_2
- c/c++ main 函数命令行参数的使用 知识小结
- PhpStorm-2016.3.2激活
- 数据结构线性表(一)之顺序存储结构思路
- Android常用对话框大全——Dialog
- 实现BUG自动检测
- Java创建线程的三种方式
- 【LeetCode】 416. Partition Equal Subset Sum
- js中object类型中的三个方法
- 一文搞懂HMM(隐马尔可夫模型)
- 【JZOJ 3870】单词检索
- Android学习之模块化过程多渠道编译详解