[数据结构] - 线性表
什么是线性表
线性表是其组成元素间具有线性关系的一种线性结构,对线性表的基本操作主要有获得元素,设置元素值,遍历,插入,删除,查找,替换,和排序等,在线性表任意位置都可以插入和删除,
可以采用顺序存储结构和链式存储结构表示线性表。
通过上面的对比,可以得出一些经验性的结论:
单链表中的存储空间是插入删除中动态申请和释放的,不需要给单链表预先分配存储空间,这样就可以避免顺序表因为空间不足,需要拷贝复制扩大空间,提高了运动效率和存储空间利用率。对单链表插入和删除操作只需要改变少量几个节点,不需要移动元素数据。
在c/c++中使用指针存储地址实现链式存储结构,java中没有指针使用引用来存储,引用是比指针更安全的一种连接方式,有指针的全部功能,而且避免了指针使用不当产生的安全性问题。
单链表:
单链表是由一个一个节点连接成的。
头节点:
单链表的存储结构通常是带头结点的,在单链表最前增加一个特殊的节点,称为头节点,忽略其数据域,单链表的头指针head指向头结点,头节点 next域 指向单链表第0个元素, 空单链表只有一个头节点,head.next == null.遍历起始位置是 p=head.next 头插入和头删除不会改变head.有了头节点 单链表 插入和删除就不需要分开操作
微信公众号 (胡说代码) 输入:单链表源码 即可获得源代码
双链表(Doubly Linked Link)
在单链表中,每个节点只有一个指向后置节点的链,若要查找前驱节点,必须从单链表头指针开始沿着链表方向逐渐检索,操作效率很低,此时需要采用双链表。
双链表节点(data数据域,prev前驱节点,next后继节点) 双链表比单链表增加了一个前驱节点,给链表操作带来了很大的方便,能沿着向前,向后对双链表进行遍历
循环双链表(Circular Doubly Linked Link) 如果双链表的最后一个节点的next指向头节点,头结点的prev指向最后一个节点,则构成循环双链表 微信公众号 (胡说代码) 输入:循环双链表源码 即可获得源代码
注:
随机存取存储器概述: 随机存取存储器(RAM)是计算机存储器中最为人熟知的一种。之所以RAM被称为“随机存储”,是因为您可以直接访问任一个存储单元,只要您知道该单元所在记忆行和记忆列的地址即可。 与RAM形成鲜明对比的是顺序存取存储器(SAM)。SAM中的数据存储单元按照线性顺序排列,因而只能依顺序访问(类似于盒式录音带)。如果当前位置不能找到所需数据,就必须依次查找下一个存储单元,直至找到所需数据为止。SAM非常适合作缓冲存储器之用,一般情况下,缓存中数据的存储顺序与调用顺序相同(显卡中的质素缓存就是个很好的例子)。而RAM则能以任意的顺序存取数据。
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
- 若线性表需要频繁查找,很少进行插入和删除操作时,宜采用顺序存储结构。若需要频繁插入和删除时,宜采用单链表结构。
- 当线性表中的元素个数变化较大或者根本不知道有多大时,最好用单链表结构,这样可以不需要考虑存储空间的大小问题。而如果事先知道线性表的大致长度,用顺序存储结构效率会高很多.
![[数据结构] - 线性表 随笔 第2张 [数据结构] - 线性表 随笔 第2张](https://www.liuyixiang.com/zb_users/theme/Lucky/style/image/grey.gif)
![[数据结构] - 线性表 随笔 第3张 [数据结构] - 线性表 随笔 第3张](https://www.liuyixiang.com/zb_users/theme/Lucky/style/image/grey.gif)

更多精彩