考研数据结构---线性表---顺序表
2019-07-04 12:09
363 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a1137608040/article/details/94599986
线性表的逻辑结构
定义:线性表示具有相同数据类型的n(n>=0)个数据元素的有限序列
除了第一个元素外,每个元素有且仅有一个直接前驱,出最后一个元素外,每个元素有且仅有一个直接后继
物理结构
线性表的顺序存储结构
定义:线性表的顺序存储使用一组地址连续的存储单元(比如C语言里面的数组)依次存储线性表中的数据元素,顺序存储的线性表也叫顺序表。
顺序表需要的三个部分:
- 存储空间的起始位置
- 顺序表最大存储容量
- 顺序表当前的长度
顺序表的数据结构
1.静态建表
typedef int Elementype; typedef struct { Elementype data[MaxSize]; //存储的元素 int length; //当前的长度 }SqList; //用于类型的定义 相当于int 可以用Elementype什么的
2.顺序表的插入
//整体返回的是bool类型,第一个参数是Sqlist类型定义的地址,第二个参数是要插入的位置,第三个是插入的元素 bool ListInsert(SqList &l, int i, Elementype e) { if (i<1 || i>l.length + 1) //判断i的范围小于1和大于顺序表当前长跳出 return false; if (l.length >= MaxSize) //保证顺序表的长度小于申请的长度 return false; for (int j = l.length; j >= i; j--) //将第i个元素及以后的元素后移 { l.data[j] = l.data[j - 1]; } l.data[i - 1] = e; //在位置i处放入元素e l.length++; //线性表的长度加1 return true; }
顺序表的删除
//第一个参数是SqList的地址相当于把顺序表的表头传入,第二个参数是删除第i的元素,第三个参数是删除的元素 bool ListDelete(SqList &l, int i, Elementype &e) { if (i<1 || i>l.length) return false; e = l.data[i - 1]; //将被删除的元素赋值给e for (int j = i; j < l.length; j++) //将第i个位置之后的元素前移 { l.data[j - 1] = l.data[j]; } l.length--; //将顺序表的长度减1 return true; }
- 顺序表的优点:
存储密度大,不需要为表中元素之间的逻辑关系增加额外存储空间,随机存储,可以快速存取表中任意位置的元素. - 顺序表的缺点:
插入和删除操作需要移动大量元素,对存储空间要求高,会产生存储空间的“碎片”
相关文章推荐
- 数据结构线性表之顺序表的基本操作插入、删除、遍历、初始化
- 《数据结构(java版)》学习笔记(二)——线性表的实现(上):顺序表实现线性表
- 数据结构回顾之顺序存储结构中的线性表(栈与队列顺序线性表实现)
- c语言数据结构线性表之顺序表功能函数
- 线性表顺序表相关习题及详解 ——数据结构
- 算法与数据结构--在顺序线性表L中查找第1个值与e满足compare()的元素的为序--算法2.5
- 【数据结构】线性表之顺序线性表
- 数据结构-顺序存储线性表
- 数据结构线性表―静态顺序表的实现
- 数据结构_线性表顺序sequence List
- 数据结构线性表顺序建链表
- 数据结构--顺序线性表
- 数据结构线性表的动态顺序实现增删改查
- JAVA数据结构 线性表顺序是实现
- 数据结构线性表—静态顺序表的实现
- 《数据结构》严蔚敏版(java解)——第二章 线性表04 顺序单链表合并
- 数据结构 第二章 线性表 英语成绩表的顺序表实现
- 数据结构 顺序线性表
- [考研系列之数据结构]线性表之链表
- 数据结构 线性表 顺序表的归并