线性表的顺序存储
来源:互联网 发布:小说写作软件 编辑:程序博客网 时间:2024/06/03 18:41
线性表的顺序存储
//线性表的顺序存储结构代码#define MAXSIZE 20typedef int ElemType;typedef struct{ ElemType data[MAXSIZE]; int length;}SqlList;//获得元素操作#define OK 1#define ERROR 0#define TRUE 1#define FLASE 0typedef int Status;Status GetElem(SqlList L,int i,ElemType *e){ if (0 == L.length || i<1 || i>L.length) return ERROR; *e = L.data[i-1]; return OK;}//插入元素://插入算法的思路:如果插入的位置不合理,抛出异常;如果线性表的长度大于等于数组长度,则抛出异常或者动态增加数组长度;如果正常插入,则从第i个元素开始遍历,一直到最后一个,将他们的位置都向后移动一个;将要插入的元素放入到i位置,表长加1//初始条件 1<=i<=L;Status InsertElem(SqlList 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 = i; k < L.length; k++) L.data[k] = L.data[k-1]; } L.data[i - 1] = e; L.length++; return OK;}//删除元素//删除算法思路:如果删除元素位置不合理,抛出异常;取出元素;从取出元素位置开始一直遍历到最后一个元素,所有元素位置前移一位,表长减1Status DelElem(SqlList L, int i,ElemType *e){ int j; //线性表为空 if (L.length == 0) return ERROR; //删除位置不正确 if (i<1 || i>L.length) return ERROR; *e = L.data[i-1]; if (i<=L.length) { for (j = i + 1; j <= L.length; j++) { L.data[j-2] = L.data[j-1]; } } L.length--; return OK;}
优缺点
优点:
- 无需为表示表中数据的关系而增加额外的存储空间
- 可以快速的存取表中任意位置的元素
缺点:
- 插入和删除元素需要移动大量的数据
- 当线性表的长度变化较大时,难以确定存储空间的容量
- 造成存储空间的碎片
阅读全文
0 0
- 线性表的顺序存储
- 顺序存储的线性表
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- POJ 1811 Prime Test(大素数判断和素因子分解)
- 树莓派3B+ 前世今生
- 【乱搞】BZOJ5074 [Lydsy十月月赛]小B的数字
- Eclipse下SVN插件安装、使用及SVN服务器的搭建
- FFMPEG Qt视频播放器之美化界面
- 线性表的顺序存储
- CSDN第一天
- easyui+servlet增删改查
- js加法和乘法的精确计算
- Python中的异常处理
- python语言遍历list并修改list方法
- 数组中重复的数字
- 将Marvell 88W8686 WiFi模块的固件内容写入到STM32F103RE单片机Flash末尾的固定位置
- FFMPEG Qt录屏软件开发之视频采集