《数据结构导论》——线性表、栈、队列、数组
2015-10-04 09:50
405 查看
线性表
定义:线性表(Linear List)是一种线性结构,它是由(n>=)个数据元素组成的有穷序列,其中,数据元素又称节点。存储结构:顺序存储、链式存储。
时间复杂度:顺序表中的按位查找、求表长都是O(1),删除和插入操作是O(n)。
链表中的删除、查找、插入等操作的时间复杂度都是O(n)(因为这些操作之前都需要对线性表进行定位操作)
导图分析
线性表的顺序存储结构的特点
顺序存储:预先分配空间大小,节点在内存中连续存储。
链接存储:不用提前分配好空间,节点在内存中不一定连续。
链式存储的分类:单链表,循环链表、双向循环链表。
栈、队列
栈和队列可以看做成是特殊的线性表。他们的特殊性表现在他们的基本运算时线性表运算的子集。栈和队列的实现都分为顺序的和链式的,站和队列的特点与性质有所不同,所以它们的用途也有所不同。
导图分析
队列的实现:顺序队列,它是由一维数组和队列的首尾指针组成的(循环队列)
链队列,它是由带头结点的单链表组成的。
队列的特点:先进先出的线性表。
栈的实现:顺序栈,由一维数组与栈顶变量组成。
链接栈,由带头结点的单链表组成。
栈的特点:后进先出的线性表。
应用
栈适合于具有后进先出特性的问题,如实现程度递归,函数调用等。
队列适合于具有先进先出特性问题,如操作系统中进程调度队列、打印队列等。
数组
数组采用顺序存储结构来存储数据元素,数组还可以看做线性表的推广。数组和线性表有很大的联系,线性表的顺序存储结构组成中都含有数组。数组按照维数来分类的话可以分为一维数组、二维数组、还有多维数组等。其中二维数组的存储方式又可以分为以行序列为主序,以列序为主序,在数据结构导论这本书中我们主要学习的是以二维数组为基础的矩阵,矩阵又分为对称矩阵、三角矩阵、系数矩阵等。
小结
从线性表到特殊的线性表——栈、队列,再到线性表的推广——数组,这都是数据的逻辑结构——线性结构的总结,后面我们还会学到图结构,树结构,集合等。其中书结构是比较重要的存储结构,敬请下回分解。
相关文章推荐
- ruby 数组使用教程
- Ruby中的数组和散列表的使用详解
- C#实现AddRange为数组添加多个元素的方法
- C#动态调整数组大小的方法
- 详解Lua中的数组概念知识
- Lua教程(七):数据结构详解
- Perl中的列表和数组学习笔记
- 探索PowerShell (八) 数组、哈希表(附:复制粘贴技巧)
- C#中数组初始化与数组元素复制的方法
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#交错数组用法实例
- PowerShell数组的一些操作技巧
- C#通过yield实现数组全排列的方法
- C#不重复输出一个数组中所有元素的方法
- C#实现将数组内元素打乱顺序的方法
- C#数据结构揭秘一
- Ruby简明教程之数组和Hash介绍
- C++基于栈实现铁轨问题
- 数据结构之Treap详解
- C语言查找数组里数字重复次数的方法