数据结构系列线性表

Posted ulysses_you

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构系列线性表相关的知识,希望对你有一定的参考价值。

线性表是什么

零个或多个数据元素的有序序列
 

线性存储结构

技术分享
 
例如
java中的数组,每次都申请固定长度内存空间,并且长度不可变
而arraylist则是长度可变的数组,这是java在底层对数组进行封装,当长度超过原有长度,则会新建一个新的数组,把原有的数组复制过来。当然新的数组的长度也基于默认的扩展算法,当扩展后的数组长度又不够时,再进行之前的操作。所以当能预估出list长度时,初始化最好能指定长度
 
线性存储结构的优缺点
技术分享
简单来说就是,查询和替换的时间复杂度为O(1),插入和删除的复杂度为O(n),适合长度不变的操作
 

线性表的链式存储结构

例如java的linkedlist
技术分享
 
技术分享
 
链式结构与顺序结构存储的优缺点
技术分享
 

静态链表

结合数组和链表的思想,
基于数组的结构,数组中每个元素都包含数据域和游标(类似指针域),游标则指向下一个元素
而静态两个字体现在数组初始化的时候需要分配一个固定大小的空间
不过感觉这种数据结构作用更大的只是其思想,实际应用很少用到
技术分享
 

循环链表

技术分享
应用场景
当一台PC运行多个应用程序时,操作系统通常会把这些程序存入至一个链表,并进行循环遍历,给每个应用程序分配一定的时间来执行。此时循环链表对于OS是很有帮组的,当达到链表尾部时,可以方便的从头部重新开始遍历
 

双向循环链表

顾名思义,在循环链表的基础上,每个元素都包括前一个元素的指针,好处就是查找某个元素的前驱时不用遍历整个链表,也就是用空间换时间的做法。

以上是关于数据结构系列线性表的主要内容,如果未能解决你的问题,请参考以下文章

大厂算法系列编码手写顺序表相关功能,线性结构核心知识点详细剖析

数据结构系列线性表

万字拿下leetcode线性数据结构

万字拿下leetcode线性数据结构

万字拿下leetcode线性数据结构

一. 数据结构干货系列之一:线性表基本操作