- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[高等教育]信管第三章 栈和队列
第三章 栈和队列(Stack and Queue) 栈 队列 2、抽象数据类型定义 ADT Stack { 数据对象: 数据关系: 约定an端为栈顶,a1端为栈底。 基本操作: InitStack(S) 操作结果:构造一个空栈S DestroyStack(S) 初始条件:栈S已经存在。 操作结果:栈S被销毁。 顺序栈:利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指向栈顶元素在顺序栈中的位置。 顺序栈的存储说明为: #define STACK_INIT_SIZE 100; #define STACKINCREMENT 10; typedef struct { SElemType *base; //连续存储空间的首地址 //在栈构造之前和销毁之后,base的值为NULL SElemType *top; //栈顶指针 int stacksize; //当前已分配的存储空间,以元素为单位。 } SqStack 入栈 Status Push(SqStack S, SElemType e) { //插入e为新的栈顶元素 if (S.top-S.base=S.stacksize) //栈满,追加存储空间 { S.base=(SElemType*)realloc(S.base, (S.stacksize+STACKINCREMENT)*sizeof(SElemType)); if (!S.base) exit (OVERFLOW); //存储分配失败 S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e; return OK; }//Push 出栈 Status Pop(SqStack S, SElemType e) { //若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR. if (S.top==S.base) return ERROR; e=*--S.top; return OK; }//Pop 取栈顶元素 Status GetTop(SqStack S, SElemType e) { //若栈不空,则用e返回S的栈顶元素,并返回OK,否则返回ERROR if (S.top==S.base) return ERROR; e=*(S.top-1); return OK; }//GetTop 3.1.3 栈的链式存储结构 链栈无栈满问题,空间可无限扩充; 插入与删除仅在栈顶处执行; 链栈的栈顶在链头。 链栈 (LinkStack)的存储结构 typedef struct node { //结点的存储结构 sElemtype data; //数据域 struct node *next; //链指针 } StackNode; typedef struct { //链栈的存储结构 StackNode *top; //栈顶指针 } LinkStack; 链栈操作实现 初始化 void InitStack ( LinkStack S ) { S-top = NULL; } 定义 若一个对象部分地包含它自己, 或用它自己给自己定义, 则称这个对象是递归的; 递归过程指向过程中占用的数据区,称之为递归工作栈。 每一层的递归参数合成一个记录,称之为递归工作记录。 3.2 队列(Queue) 1、定义:只允许在表的一端进行插入,而在另一端删除元素的线性表。 (2)循环队列 (Circular Queue) 队头、队尾指针加1,可用取模(余数)运算实现: 队头指针进1: front = (front+1) %maxsize; 循环队列的类型定义 #define MAXQSIZE 100 //队列最大长度 typedef struct { QElemType *base; //初始化的动态分配存储空间 int front; //头指针,若队列不空,指向队列头元素
您可能关注的文档
最近下载
- 糖尿病视网膜病变的诊断与治疗.ppt VIP
- 劳动课洗衣服教案.pdf VIP
- 2022年版中小学义务教育《语文新课程标准》第一学段“表达与交流”课程要求解读.pptx VIP
- 体验中国传统手工艺.pptx VIP
- 子藏 笔记 后山谈丛-宋-陈师道.docx VIP
- 胎心监护(共70张课件).pptx VIP
- 2022版语文新课标:第一学段“表达与交流”课程要求解读.pdf VIP
- 2025人教版八年级上册英语 Unit 4 Amazing Plants and Animals 第1课时教案 .docx
- 《局域网组建实例教程》课件第10章.pptx VIP
- 精编李佳行政法讲义资料.pdf VIP
文档评论(0)