码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构系列(三)线性表

时间:2017-06-01 10:26:39      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:-o   resource   循环   img   静态链表   执行   lin   最好   思想   

线性表是什么

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

线性存储结构

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

线性表的链式存储结构

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

静态链表

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

循环链表

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

双向循环链表

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

数据结构系列(三)线性表

标签:-o   resource   循环   img   静态链表   执行   lin   最好   思想   

原文地址:http://www.cnblogs.com/ulysses-you/p/6927105.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!