目录
- 栈
 - 栈的定义
 - 顺序栈
 - 顺序栈的定义
 - 顺序栈的初始化
 - 顺序栈的入栈
 - 顺序栈的出栈
 - 取顺序栈的栈顶元素
 - 链栈
 - 队列
 - 队列的定义
 - 队列的顺序表达与实现
 - 队列顺序存储结构
 - 假溢出
 - 循环队列
 - 循环队列的初始化
 - 循环队列的入队
 - 循环队列的出队
 - 链队列
 - 链栈的初始化
 - 链栈的入队
 - 链栈的出队
 
上文详细的讲解了顺序表与链表的实现,相信大家在顺序表与链表的指基础上,很容易就能学会站和队列,废话不多说,我们马上开始!
栈
栈的定义
栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作

假设栈 【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
 
	声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
		
评论(0)