1. 栈(Stack)
1. 栈定义:栈是只允许在一端进行插入或删除操作的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。 如下图所示:
(1) 栈顶:线性表允许进行插入删除的那一端。
(2) 栈底:固定的,不允许进行插入和删除的那一端。
(3) 空栈:不含任何元素的空表。
2. 栈的操作特性可以明显地概括为后进先出。
3. 栈有两种存储方式:顺序栈和共享栈。
4. 采用链式存储的栈称为链栈,链栈的优点是便于多个栈共享存储空间和提高其效率,且不存在栈满上溢的情况。
采用链式存储,入栈和出栈的操作都在链表的表头进行。
2. 队列(Queue)
1. 队列定义:队列简称队。只允许在表的一端进行插入,而在表的另一端进行删除。向队列中插入元素称为入队或进队;删除元素称为出队或离队。如下图所示:
(1) 队头:允许删除的一端,又称队首。
(2) 队尾:允许插入的一端。
(3) 空队列:不含任何元素的空表。
2. 队列的操作特性可以明显地概括为先进先出。
3. 队列的顺序实现是指分配一块连续的存储单元存放队列中的元素,并附设两个指针:队头指针 f r o n t front front 指向队头元素,队尾指针 r e a r rear rear 指向队尾元素的下一个位置。
4. 循环队列:将顺序队列臆造为一个环状的空间,即把存储队列元素的表从逻辑上视为一个环,称为循环队列。
5. 队列的链式表示称为链队列,它实际上是一个同时有队头指针和队尾指针的单链表。头指针指向队头结点,尾指针指向队尾结点,即单链表的最后一个结点。
6. 双端队列:是指允许两端都可以进行插入和删除操作的线性表。