第三章栈和队列-tabspresso.ppt
3.1 栈
3.2 队列
第3章 栈和队列(两种特殊的线性表)
栈 ( Stack )
定义:是限定仅在表尾进行插入或删除操作的线性表。
允许插入和删除的一端
称为栈顶(top),另一端
称为栈底(bottom)。
特点:后进先出 (LIFO)
a1
top
bottom
an
.
.
.
.
进栈
出栈
与一般线性表的区别:
一般线性表 栈
逻辑结构:一对一 逻辑结构:一对一
存储结构:顺序表、链表 存储结构:顺序栈、链栈
运算规则:随机存取 运算规则:后进先出
顺序存取 (LIFO)
插入元素到栈顶(即表尾)的操作,称为入栈。
从栈顶(即表尾)删除最后一个元素的操作,称为出栈。
栈的顺序存储和实现
1、顺序栈:栈的顺序存储结构,利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,指针top指向栈顶元素在顺序栈中的下一个位置。指针bottom指向栈底。
bottom
空栈
a 进栈
b 进栈
a
a
b
top
top
top
bottom
bottom
a
a
b
top
e 进栈
a
f 进栈溢出
a
e 出栈
top
a
b
c
d
e
b
c
d
e
b
d
c
top
bottom
bottom
bottom
a
a
入栈操作—— 例:用栈存放(A,B,C,D) (注意要遵循“后进先出” 原则)
A
A
C
B
A
B
A
核心语句:
top=L;
顺序栈中的Push函数
Status Push(ElemType x)
{ if (topM) 上溢;
else v[top++]=x;
}//top指向栈顶上方第一个空闲位置
Push (B);
Push (C);
Push (D);
低地址L
Push (A);
高地址M
B
C
D
入栈口诀:栈顶指针top先压后加(v[top++]=x)
出栈操作——例:从栈中取出‘B’ (注意要遵循“后进先出” 原则)
D
C
B
A
D
C
B
A
C
B
A
低地址L
高地址M
D
核心语句:
Pop ( );
Pop ( );
Printf( Pop ( ) );
顺序栈中的Pop函数
Status Pop( )
{ if (top= =L) 下溢;
else { y= v[- -top];
return(y);}
}
出栈口诀:栈顶指针top先减后弹(y=v[--top])
顺序栈的类型表示:
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
typedef char StackData;
typedef struct { //顺序栈定义
StackData *base; //栈底指针
StackData *top; //栈顶指针
int stacksize;//当前已分配的全部存储空间
} SeqStack;
判栈空
int StackEmpty (SeqStack *S) {
if( S-top == S-base ) return 1 //判栈空,空则返回1
else return 0; //否则返回0
}
判栈满
int StackFull (SeqStack *S) {
if( S-top- S-base = S- StackSize ) return 1
//判栈满,满则返回1
else return 0; //否则返回0
}
顺序栈的基本运算:
初始化
void InitStack ( SeqStack *S) { //置空栈
S-base =( StackData *)malloc(STACK_INIT_SIZE * sizeof(StackData));if (!S-base) exit(OVERFLOW);
S-top = S-base ;
S-stacksize= STACK_INIT_SIZE ;
Return ok;
}
入栈
int Push (SeqStack *S, StackData x) {
//插入元素x为新的栈顶元素
if ( StackFull (S) ){
S-base =( StackData *)realloc(S-base ,
(S-stacksize+ STACKINCR
您可能关注的文档
最近下载
- 在带头强化政治忠诚、提高政治能力等“五个带头”方面个人对照检查材料【两篇】供参考2026.docx VIP
- 加油站防火防爆设计课程设计.docx VIP
- 临沂大学 2019-2020第一学期 2019级《概率论与数理统计》期末试卷A.docx VIP
- 公路等级划分准.pdf VIP
- 《中华人民共和国危险化学品安全法》解读及宣传培训.pptx VIP
- 幕墙方案交底.doc VIP
- 新版《医疗器械生产质量管理规范》培训试题2025年.pdf VIP
- Q/CR 546.5-2016 动车组用涂料与涂装 第5部分:表面处理.pdf VIP
- 老旧小区改造监理规划与实施策略.docx VIP
- 燃气电厂2×300MW等级燃气—蒸汽联合循环热电厂可研报告.doc
原创力文档

文档评论(0)