1、线性表的几个基本组成部分:数组、单向链表、双向链表。
1.数组的特点是:数据是连续的;随机访问速度快。
数组中稍微复杂一点的是多维数组和动态数组。
----对于C语言而言,多维数组本质上也是通过一维数组实现的,
动态数组是指数组的容量能动态增长的数组,需要手动实现提供;
----对于C++而言,STL提供了Vector;
----对于Java而言,Collection集合中提供了ArrayList和Vector。
2.单向链表(单链表)是链表的一种,它由节点组成,
每个节点都包含下一个节点的指针。
单链表的特点是:节点的链接方向是单向的;
相对于数组来说,单链表的的随机访问速度较慢,但是单链表删除/添加数据的效率很高。
3.双向链表(双链表)是链表的一种。
和单链表一样,双链表也是由节点组成,
它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。
所以,从双向链表中的任意一个结点开始,
都可以很方便地访问它的前驱结点和后继结点。
一般我们都构造双向循环链表。
2、栈是一种线性存储结构
1.栈中数据是按照"后进先出(LIFO, Last In First Out)"方式进出栈的。
2.栈中添加/删除数据时,只能从栈顶进行操作。
3.栈通常包括的三种操作:
push – 向栈中添加元素。
peek – 返回栈顶元素。
pop – 返回并删除栈顶元素的操作。