- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C_char_3栈和队列
第三章 栈和队列
3.1 栈
3.2 栈的应用举例
3.3 栈与递归的实现
3.4 队列
3.5 离散事件模拟 ;第三章 栈和队列
3.1 栈
1. 栈的逻辑结构
栈:是限定仅在表尾进行插入或删除操作的线性表
栈顶:表尾端(允许插入和删除操作的一端)称为栈顶
栈底:表头端称为栈底。
栈的操作特性:后进先出(LIFO);3.1 栈
1.抽象数据类型栈的定义;2. 栈的基本操作
InitStack(S) 操作结果:构造一个空栈 S。 DestroyStack(S) 初始条件:栈 S 已存在. 操作结果:栈 S 被销毁.
StackEmpty(S) 初始条件:栈 S 已存在。操作结果:若栈 S 为空栈,则返回 TRUE,否则 FALSE
StackLength(S) 初始条件:栈 S 已存在。操作结果:返回 S 的元素个数,即栈的长度。
GetTop(S, e) 初始条件:栈 S 已存在且非空。操作结果:用 e 返回 S 的栈顶元素。
ClearStack(S) 初始条件:栈 S 已存在. 操作结果:将 S 清为空栈.
Push(S, e) 初始条件:栈 S 已存在。操作结果:插入元素 e 为新的栈顶元素。
Pop(S, e) 初始条件:栈 S 已存在且非空。操作结果:删除 S 的栈顶元素,并用 e 返回其值。;3. 栈的顺序存储结构
栈的顺序存储结构是, 使用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时设指针指示栈顶元素的当前位置.
在高级语言中,通常用数组类型来描述顺序存储结构的栈.;下面是顺序存储结构的栈的基本操作的实现:
1). InitStack(S) : 初始化操作,构造一个空栈
? Status InitStack(SqStack S) { //构造一个空栈 S
S.base=(SElemType *)
malloc(STACK_INIT_SIZE*sizeof(ElemType);
if(S.base==NULL) return ERROR
?? S.top=S.base;
S.stacksize= STACK_INIT_SIZE;
return OK
}//InitStack;;2). GetTop(S, e) : 返回栈顶元素。
?Status GetTop( SqStack S, ElemType e) {
//若栈不空,则用e返回栈顶元素,并返回OK,
//否则,返回ERROR;
?? if(S.top == S.base) return ERROR;
e=*(S.top-1);
return OK;
} // GetTop;;3). Push(S, e) : 进栈操作 把元素e插进栈S的栈顶位置
Status Push(SqStrack S, SElemType e) {//插入元素e为新的栈顶
? if (S.top-S.base=S.stacksize) {//栈满,追加存储空间
S.base=(ElemType *) realloc(S.base, (S.stacksize+
STACKINCREMENT)*sizeof(ElemType));
if(!S.base) exit(OVERFLOW); //存储分配失败
S.stacksize+= STACKINCREMENT;
}
*S.top++=e;
return(OK);
}//Push;4). Pop(S, e) 出栈操作,若栈不空,删除 S 的栈顶元素,并用 e 返回其值。
Status Pop(SqStrack S, SElemType e) {
//若栈不空,删除栈顶
//用e返回值,返回OK,否则返回ERROR;
? if(S. top == S.base) return (ERROR);
e=*(--S.top);
return(OK);
} //Pop;4.栈的链式存储结构
链式存储结构的栈在高级语言中可以描述成单链表.把单链表作为栈使用时,把链表的表头位置作为栈的栈顶,并且不设头结点.其结构描述如下:;1). InitStack(S) : 初始化操作,构造一个空栈
? Status InitStack(Lstack S) { //构造一个空栈 S
S=NULL;
??}//InitStack;?
2). GetTop(S, e) : 返回栈顶元素。
?S
您可能关注的文档
- 2014年上学期中央电大审计学形成性考评题目与答案94分.doc
- 2014年中级审计师考试《理论和实务》真题与答案.doc
- 2014年初级审计-理论和实务-Z题.doc
- 2014年深圳会计基础考试题库与答案.doc
- 2014年注册会计师销售和收款循环审计.doc
- 2014年注册会计师《审计》全真模拟试题与解析(一).doc
- 2014年高考英语总复习考点:Book 5 板块九 Modules 3 Adventure in Literature and the Cinema.ppt
- 2014高考化学(新课标)一轮复习备考 常考专题讲座6 化学平衡移动前后常见物理量变化规律探析).ppt
- 2014年邮政储蓄银行招聘考试审计学试题与答案.doc
- 2015CPA《风险》第七章 风险管理框架下内部控制05.pdf
最近下载
- AP化学 2012年真题 (选择题+问答题) AP Chemistry 2012 Released Exam and Answers (MCQ+FRQ).pdf VIP
- 第六章 教会法.ppt
- 城镇供水厂运行维护及安全技术规程-详版.pptx
- 无铬厚膜底漆、厚膜预涂板和制备方法.pdf VIP
- 教师道德与法治新课标考试试题三套及答案.docx
- CMA考试 P2试题500道含解析.pdf VIP
- 新型锂电池电解液添加剂技改扩能项目环境影响报告书.pdf
- 2025年广东省中山市华辰实验中学九年级中考数学一模试题(原卷版+解析版).docx VIP
- 历史逻辑 理论逻辑 实践逻辑的必然结果.docx VIP
- 2024年05月江苏无锡市梁溪区机关事业单位招考聘用编外工作人员20人笔试历年高频考点(难、易错点)附带答案详解.docx VIP
文档评论(0)