C语言栈与队列
锡兰Ceylan_ 人气:0上文详细的讲解了顺序表与链表的实现,相信大家在顺序表与链表的指基础上,很容易就能学会站和队列,废话不多说,我们马上开始!
栈
栈的定义
栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作
假设栈 【s = (a1,a2,……,an) 】,a1为栈底元素,an为栈顶元素。由于栈只能在栈顶进行插入和删除操作,所以进栈次序依次为【a1,a2,……,an】,出栈次序为【an,……,a2,a1】
由此可见:栈的操作特性可以明显地概括为后进先出
栈类似于线性表,它也有两种对应的存储方式分别为顺序栈和链栈。
顺序栈
顺序栈的定义
Q:什么是顺序栈?
A:采用顺序存储的栈成为顺序栈。它利用一组地址连续的存储单位存放自栈底到栈顶的数据元素,同时附设一个指针(top)来指示当前栈顶的位置。
栈的顺序存储类型可描述为
#define MaxSize 100 //定义栈中元素的最大个数 typedef struct { SElemtype *base; //栈底指针 SElemtype *top; //栈顶指针 int stacksize //栈可用的最大容量 }SqStack;
顺序栈的初始化
Q:什么是顺序栈的初始化?
A:顺序栈的初始化操作就是为顺序栈动态分配一个最大容量为 MaxSize 的数组空间。
实现原理
- 为顺序栈动态分配一个最大容量为MAXSIZE的数组
- 栈顶指针top初始为base,表示栈为空
- stacksize置为栈的最大容量MaxSize
加载全部内容