- 2
- 0
- 约1.02万字
- 约 50页
- 2018-05-04 发布于四川
- 举报
第3章 栈和队列 3.1 栈 3.2 栈的应用举例 3.3 栈与递归的实现* 3.4 队列 3.5 离散事件模拟** 3.1 栈 栈(Stack)是特殊的线性表,是操作受限的线性表。 栈是限定仅在表的一端(通常为表尾)进行插入或删除操作的线性表。 栈能进行插入或删除操作的一端称为栈顶(Top),另一端称为栈底(Bottom),不含元素的空表称为空栈。 对栈的操作所具有的特征 “先进后出”(FILO)、“后进先出” (LIFO)。 栈的典型操作 入栈(Push)和出栈(Pop)。 3.1.1 抽象数据类型栈的定义 ADT Stack{ 数据对象:D={ai|ai(- ElemSet,i=1,2,...,n,n=0} 数据关系:R1={ai-1,ai|ai-1,ai(- D,i=2,...,n} 基本操作: InitStack(S)// 构造一个空栈S DestroyStack(S)// 栈S存在则栈S被销毁 ClearStack(S) //栈S存在则清为空栈 StackEmpty(S) //栈S存在则返回TRUE,否则FALSE StackLength(S) //栈S存在则返回S的元素个数,即栈的长度 GetTop(S,e) //栈S存在且非空则返回S的栈顶元素 Push(S,e) //栈S存在则插入元素e为新的栈顶元素 Pop(S,e) //栈S存在且非空则删除S的栈顶元素并用e返回其值 StackTraverse(S,visit())//栈S存在且非空则从栈底到栈顶依次对S的每个数据元素调用函数visit()一旦visit()失败,则操作失败 }ADT Stack 3.1.2栈的表示和实现 栈的存储方式: 1、顺序栈 利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top,指示栈顶元素在顺序栈中的位置。 2、链栈 利用链表来实现,此时的栈顶在链表的表头。 栈的典型操作:入栈和出栈 顺序栈的类C语言定义: typedef struct{ SElemType *base; //设栈底,以便于判断栈是否为空 SElemType *top; //设栈顶指针 int StackSize; //栈的当前可使用的最大容量,以便判断溢出. }SqStack; 注意: 满栈时执行Push操作会产生上溢。 空栈时执行Pop操作会产生下溢。 ADT STACK的表示和实现 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 //用于动态分配 struct STACK { SElemType *base; SElemType *top; int stacksize; }; typedef struct STACK Sqstack; ADT STACK的表示和实现 Status InitStack(SqStack S); Status DestroyStack(SqStack S); Status ClearStack(SqStack S); Status StackEmpty(SqStack S); int StackLength(SqStack S); Status GetTop(SqStack S,SElemType e); Status Push(SqStack S,SElemType e); Status Pop(SqStack S,SElemType e); Status StackTraverse(SqStack S,Status (*visit)()); ADT STACK的表示和实现 Status InitStack(SqStack S) { S.base=(SelemType *) malloc (STACK_INIT_SIZE *sizeof(ElemType)); if(!S.base) exit (OVERFLOW); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK; }//IniStack ADT STACK的表示和实现 Status DestroyStack(SqStack S); { free(S-base); }//DestroyStack Status ClearStack(SqStack S); { S.top=S.base; } //ClearStack Status StackEmpty(SqStack S); { if(S.top==S.base) return TRUE; else return FALSE; } //StackEmpty ADT STACK的表示和实现 int StackLength(SqSta
您可能关注的文档
- 世界文学选读古希腊文学.ppt
- 项目五园林植物害虫防治1.ppt
- 世界现代设计史2012年版第六讲.ppt
- 消费者行为的影响因素理论武宗志消费者行为学第二章.ppt
- 橡树湾产品发布会活动策划书10629.ppt
- 世界文学选读古印度文学.ppt
- 消化泌尿血液等课件.ppt
- 世界现代设计史2012年版第三讲.ppt
- 销售代表素质模型.ppt
- 销售订单作业标准.ppt
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
最近下载
- ntvf调试资料解读.doc VIP
- 电影《色.戒》的叙事伦理.doc VIP
- 上海大学2023-2024学年第1学期《高等数学(上)》期末考试试卷(A卷)附参考答案.pdf
- 佳能EOS1500D基本使用说明书说明书.pdf VIP
- 上海大学2023-2024学年第1学期《高等数学(上)》期末考试试卷(B卷)附参考答案.pdf
- 渣打银行(香港)有限公司.PDF VIP
- 2024年吉林高职高专院校单招统一考试《语文》试卷及参考答案.pdf VIP
- JSG202515机器人系统集成应用技术样题-学生组.docx VIP
- 棋盘博弈采购法战略体系.ppt VIP
- 节后复产复工安全知识考试试卷及答案.docx
原创力文档

文档评论(0)