- 1
- 0
- 约5.46千字
- 约 16页
- 2019-10-21 发布于山西
- 举报
堆栈和队列
栈和队列是两种特殊的线性表,它们的逻辑结构和线性表相同,只有其运算规则较线性表有更多的限制,故又称它们为运算受限的线性表。
3.1 栈
一、栈的定义
栈(Stack):是限制仅在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。
栈的修改是按后进先出的原则进行的。因此,栈又称为后进先出(Last In First Out)的线性表,简称为 LIFO表。
二、栈的基本运算
1、InitStack(S) 构造一个空栈S。
2、StackEmpty(S) 判栈空。若S为空栈,则返回TRUE,否则返回FALSE。
3、StackFull(S) 判栈满。若S为满栈,则返回TRUE,否则返回FALSE。该运算只适用于栈的顺序存储结构。
4、Push(S,x) 进栈。若栈S不满,则将元素x插入S的栈顶。 5、Pop(S) 退栈。若栈S非空,则将S的栈顶元素删去,并返回该元素。
6、StackTop(S) 取栈顶元素。若栈S非空,则返回栈顶元素,但不改变栈的状态。
三、顺序栈
顺序栈:即栈的顺序存储结构,是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素。
顺序栈的类型定义: #define StackSize 100
typedef char DataType;
typedef struct
{
DataType data[StackSize];
int top;
} SeqStack;
栈底位置可设置在向量两端的任意一个端点。
栈顶指针和栈中元素之间的关系:
当栈中没有元素时(空栈),top=-1;
当栈中放满元素时(栈满),top=m-1, m为栈的最大容量;
当插入元素时,先使指针top增1,再插入;
当删除元素时,先使指针top减1,再删除;
上溢:当栈满时再做进栈运算所产生的空间溢出。(出错状态)
下溢:当栈空时再做退栈运算所产生的溢出。(正常现象,程序控制转移的条件)
在顺序栈上实现栈的六种基本运算
1、将顺序栈置空:
void InitStack(SeqStack *S) {
S-top=-1;
}
2、判栈空
int StackEmpty (SeqStack *S) {
return S-top==-1;
}
3、判栈满
int StackFull (SeqStack *S) {
return S-top==StackSize-1;
}
4、进栈
void Push (SeqStack *S, DataType x) {
if (StackFull(S))
{ printf(“Stack overflow”);
exit(0);}
S-data[++S-top]=x;
}
5、退栈
DataType Pop (Seqstack *S) {
if (StackEmpty(S))
{ printf(“Stack underflow”);
exit(0);
}
return S-data[s-top--];
6、取栈顶元素
DataType StackTop (SeqStack *S) {
if (StackEmpty(S)) {
printf(“Stack is empty”);
exit(0);
}
return S-data[S-top];
}
链栈:栈的链式存储结构称为链栈。
链栈是运算受限的单链表,它的插入和删除被限制在表头位置上进行。栈顶指针就是链表的头指针,它唯一确定一个链栈。
链栈上实现的基本运算:
置空栈
判栈空
进栈
退栈
取栈顶元素
队列
一、队列的定义
队列(Queue)也是一种运算受限的线性表。它只允许在表的一端进行插入,而在另一端进行删除。允许删除的一端称为队头(Front),允许插入的一端称为队尾(Rear)。
队列的修改是按先进先出的原则进行的。因此,队列又称为先进先出(First In First Out)的线性表,简称为FIFO表。
二、队列的基本运算
1、InitQueue(Q) 置空队。构造一个空队列Q。
2、QueueEmpty(Q) 判队空。若队列Q为空,则返回真值,否则返回假值。
3、QueueFull(Q) 判队满。若队列Q为满,则返回真值,否则返回假值。此操作只适用于队列的顺序存储结构。
4、EnQueue(Q,x) 若队列Q非满,则将元素x插入Q的队尾。此操作简称入队。
5、DeQueue(Q) 若队列Q非空,则删去Q的队头元素,并返回该元素
您可能关注的文档
最近下载
- 电子倍增层背散射效应对增益及噪声的影响研究.pdf
- 弹簧模型-2023年高考物理动量常用模型模拟题精练(解析版).pdf VIP
- REF615使用操作说明书 (1).pdf
- (高清版)DB33 686-2019 机制纸板和卷烟纸单位产品能耗限额及计算方法.pdf VIP
- 7.3 世界上最大的黄土堆积区—黄土高原 第2课时(教学课件)-2025-2026学年八年级地理下册(人教版2024).pptx
- 深度解析(2026)《SFT 0074-2020耕地和林地破坏司法鉴定技术规范》.pptx VIP
- 2024年贵州省高考生物真题卷(含答案与解析)_7674.pdf VIP
- 弹簧模型-动量守恒的十种模型2025高考物理专项复习含答案.pdf VIP
- 市政协领导班子2024年民主生活会对照检查发言材料(四个带头).docx VIP
- 市政协副主席2024年民主生活会对照检查材料(四个带头).docx VIP
原创力文档

文档评论(0)