- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章栈和队列-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
您可能关注的文档
- 第一节解压缩软件的使用.ppt
- 第一讲-C程序设计基础.ppt
- 第一讲-不再因为别人过得好而焦虑.ppt
- 第一讲VC++集成开发环境第一讲VC++集成开发环境第一讲VC++集成.ppt
- 第一部分数据表示、运算和运算器部件.doc
- 第七控件的数据绑定.ppt.ppt
- 第七章电池电动势及极化现象.ppt
- 第七章通讯功能与总线接口.ppt
- 第七节直译与意译有些词句的翻译方法很难归入其他翻译技巧,只有用.doc
- 第三单元课件信息数字化原理、过程与方法文件.ppt
- 2025年智能电网柔性直流输电技术在我国西部地区应用前景.docx
- 7.2 弹力-人教版八年级物理下册.pptx
- 2025年智能电网柔性直流输电技术在智能变电站中的应用研究.docx
- 2025年智能电网柔性直流输电技术在智能电网智能化存储中的应用.docx
- 2025年智能电网柔性直流输电技术在新能源并网中的应用研究.docx
- 2025年智能电网柔性直流输电技术在智能电网智能化控制中的应用.docx
- 2025年智能电网柔性直流输电技术在智能电网智能化预测中的应用.docx
- 2025年智能电网柔性直流输电技术在智能电网智能化服务中的应用.docx
- 2025年智能电网柔性直流输电技术在智能电网智能化运维中的应用.docx
- 2025年智能电网柔性直流输电技术智能化保护系统研究.docx
最近下载
- 2024年职业院校技能大赛(智能焊接技术赛项)备考试题库(精练300题).pdf VIP
- 乒乓球裁判三级考试题目及答案.docx VIP
- 电缆电线产品合格证模板.docx VIP
- 2024年江苏中职职教高考文化统考语文试卷真题(含答案详解).docx VIP
- 探索莱姆·库哈斯:建筑创作理念的革新与回响.docx
- 门卫保安反恐演练.pptx VIP
- 装饰装修工程监理实施细则范本.docx VIP
- 水利人工砂自动计算表格 (2).xlsx VIP
- 临水、临电配置及安全用电、用水管理方案.doc VIP
- EN 1993-1-4-2006 欧洲规范3 钢结构设计 第1-4 部分:一般规则-关于不锈钢的补充规则(中文版).pdf
原创力文档


文档评论(0)