- 6
- 0
- 约9.22千字
- 约 41页
- 2020-01-13 发布于湖北
- 举报
数据结构课程的内容 第三章 栈和队列 3.1 栈(Stack) 3.2 队列(Queue) 1. 定义: Q1:堆栈是什么?它与一般线性表有什么不同? Q2:顺序表和顺序栈的操作有何区别? Q3:什么叫“向上生成”的栈? “向下生成”又是何意? Q4:为什么要设计堆栈?它有什么独特用途? 例2:一个栈的输入序列为1,2,3,若在入栈的过程中允许出栈,则可能得到的出栈序列是什么? 例3:一个栈的输入序列是12345,若在入栈的过程中允许出栈,则栈的输出序列43512可能实现吗? 例4: 设依次进入一个栈的元素序列为c,a,b,d,则可得到出栈的元素序列是: A)a,b,c,d B)c,d,a,b C)b,c,d,a D)a,c,d,b 栈的存储结构 顺序栈 顺序栈的入栈操作——例如用堆栈存放(A,B,C,D) 顺序栈出栈操作——例如从栈中取出‘B’ 链栈的入栈操作和出栈操作(教材省略) 栈的应用--过程的嵌套调用 例1: 数制转换(十转N) ——P48 设计思路:用栈暂存低位值 例2:括号匹配的检验————P49 设计思路:用栈暂存左括号 例3 :表达式求值 —————P52 设计思路:用栈暂存运算符 例4:汉诺仪(Hanoi)塔———P55 设计思路:用栈实现递归调用 例1: 数制转换 Void conversion ( ){ InitStack ( S ); //构造空栈 scanf ( “%d” , N ); while ( N ) { Push( S, N%8 ); N=N/8; } while ( !StackEmpty ( S ) ) { Pop( S, e ); printf( “%d” , e ); } }// conversion 例2: 括号匹配的检验 例3: 行编辑程序 Void LineEdit ( ) { InitStack (S); //构造空栈S ch=getchar( ); //从终端接收第一个字符 while (ch!=EOF) { //EOF为全文结束符 while (ch!=EOF ch!=‘\n’) { switch (ch) { case ‘#’:Pop(S,C); break; //仅当栈非空时退栈 case ‘@’:ClearStack(S); break; //重置S为空栈 default :Push(S,ch) break; }//有效字符进栈,未考虑栈满情形 ch=getchar( ); //从终端接收下一个字符 } //将从栈底到栈顶的栈内字符传送至调用过程的数据区 ClearStack(S); //重置S为空栈 if (ch!=EOF) ch=getchar( ); } DestroyStack(S); }// LineEdit 作业 1、设有编号为1,2,3,4的四辆列车,顺序进入一个栈式结构的车站,具体写出这四辆列车开出车站的所有可能的顺序。 2、设用一维数组stack[n]表示一个堆栈,若堆栈中一个元素需占用length个数组单元(length 1),试写出其入栈、出栈操作的算法。 3、写出下列程序段的输出结果(栈的元素类型SElem Type为char)。 void main( ){ Stack S; Char x,y; InitStack(S); X=’c’;y=’k’; Push(S,x); Push(S,’a’); Push(S,y); Pop(S,x); Push(S,’t’); Push(S,x); Pop(S,x); Push(S,’s’); while(!StackEmpty(S)){ Pop(S,y);printf(y); }; Printf(x); } 4. 设一循环队列Queue,只有头指针fro
您可能关注的文档
最近下载
- 复工复产专项方案.doc VIP
- 世界各国电压、插头型式一览表.doc VIP
- 长孙皇后不是值得歌颂的历史人物_杨希义.pdf VIP
- 文献检索与毕业论文写作课件.pptx VIP
- 2025—2026 学年第一学期大一高等数学期末考试试卷.docx VIP
- 【2025春】人教版(PEP)三年级下册英语教学工作计划(及进度表).docx VIP
- 一种异质外延单晶金刚石复制生长方法.pdf VIP
- 北师大版三年级下册数学全册教学设计(配2026年春改版教材).docx
- 《知识管理教学课件》第三讲 知识管理主要活动.ppt VIP
- 第七章第一节++东南亚+课件2024-2025学年七年级地理下册商务星球版.pptx VIP
原创力文档

文档评论(0)