4 栈和队列
栈和队列都是动态集合,且在其上进行DELETE操作所移除的元素是预先设定的。在栈(stack)中,被删除的是最近插入的元素:栈实现的是一种后进先出(last-in, first-out, LIFO)策略。类似地,在队列中(queue)中,被删除的总是在集合中存在时间最长的那个元素:队列实现的是一种先进先出(first-in, first-out, FIFO)策略。
4.1 栈
栈的概念
一种特殊的线性表,只允许从一端插入和删除数据
特点:后进先出(last-in,first-out,LILO)
顺序栈
顺序栈是栈的顺序实现。顺序栈是指利用顺序存储结构实现的栈 。
采用地址连续的存储空间(数组)依次存储栈中数据元素,由于人栈和出栈运算都是在栈顶进行,而栈底位置是固定不变的,可以将栈底位置设置在数组空间的起始处;栈顶位置是随入栈和出栈操作而变化的,故需用一个整型变量top来记录当前栈顶元素在数组中的位置。
共享栈
一个数组实现两个栈
原理
既然是两个栈共享一段空间,向中间靠拢,数组两端表示两个栈底,栈顶一直向中间靠近。
应用场景
两个栈空间需求有相反的关系,也就是一个增长一个缩短的场景。
链式栈
链式栈是一种数据存储结构,可以通过单链表的方式来实现,使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空间用来存放指针域。
头插头删