从数据结构角度看,栈和队列也是线性表,其特征性在于栈和队列的基本操作是线性表操作的子集。
栈: 【LIFO】后进先出
队列:【FIfO】先进先出
和线性表类似,栈也有两种存储方式,顺序栈和链式栈
顺序栈:一般来说,在初始化空栈时不应该限定栈的最大容量。
应该先为栈分配一个基本容量,然后在应用过程中,当栈的空间不够使用时再逐步扩大。
书上没有链式栈的实现
队列:1.链式队列
2.循环队列(顺序实现 P64)
循环队列在‘满’或者‘空’的时候都Q.rear==Q.front,有两种区别方法:
其一:另外设一个标志位以记录队列中的元素个数
其二:少用一个元素空间,约定以“队列头指针 在 队列尾指针的下一个位置(环形的下一位置)”,
作为队列呈满的标志。
typedef struct{
Elemtype *base;
int front; //和链式的区别,这里相当于‘下标’,而链式的则是指针。
int rear;
}SqQueue;