版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章作业1、 写出下列程序段的输出结果。viod 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); 答:stack2、 简述下列算法的功能(栈的元素类型SElemType为int)。(1)Ststus algo1(Stack S) int I, n
2、, A255; n=0; while ( ! StackEmpty(S) ) n+; Pop(S, An); for ( i=1; i<=n; i+ ) Push(S, An); 答:实现栈中元素的逆置(2)Status algo2(Stack S, int e) Stack T; int d; InitStack (T); while ( ! StackEmpty(S) ) Pop(S, d); if ( d!=e ) Push(T, d); while ( ! StackEmpty(T) ) Pop (T, d); Push (S, d); 答:通过栈T的辅助删除栈S中所有值为e的元
3、素3、 设有4个元素1、2、3、4依次进栈,而出栈操作可随时进行(进出栈可任意交错进行,但要保证进栈次序不破坏1、2、3、4的相对次序),请写出所有可能的出栈次序。答:共14种情况,顺序如下:1234,1243,1324,1342,1432,2134,2143,2314,2341,2431,3421,3241,3214,4321。4、 写出下列程序段的输出结果(队列中的元素类型QelemType为char)。viod main ( ) Queue Q; InitQueue(Q);char x=e, y=c;EnQueue(Q, h); EnQueue(Q, r); EnQueue(Q, y);
4、DeQueue(Q, x); EnQueue(Q, x);DeQueue(Q, x); EnQueue(Q,a);while ( ! QueueEmpty(Q) ) DeQueue(Q, y); printf(y);答:cha5、 简述下列算法的功能(栈和队列的元素类型均为int)。void algo3(Queue &Q) Stack S; int d; InitStack (S); while ( ! QueueEmpt(Q) ) DeQueue(Q, d); Push(S, d);while ( ! StackEmpty(S) ) Pop(S, d); EnQueue(Q, d);
5、 答:利用栈S将队列Q中的元素进行逆置。6、 为了充分利用空间,将两个栈共同存储在长度为n的一维数组中,共享数组空间。设计两个栈共享一维数组的存储表示方式,画出示意图。答:设计两个栈Stack1和Stack2共享数组空间,Stack1的栈底放在数组的首端,Stack2的栈底放在数组的尾端,分别向两个栈中存储相应的元素,两个栈的栈顶分别向数组中间扩展。当总的存储空间不大于数组长度时,数组空间将得到最大利用。当两个栈占满整个数组空间时,这时两个栈共享一个长度为n的数组空间,再向栈中放元素时会发生上溢。0(Stack1底)12Stack1顶Stack2顶n-3n-2n-1(Stack2底)实验二1、
6、简单计算器。请按照四则运算加、减、乘、除、幂()和括号的优先关系和惯例,编写计算器程序。要求: 从键盘输入一个完整的表达式,以回车作为表达式输入结束的标志。 输入表达式中的数值均为大于等于零的整数。中间的计算过程如果出现小数也只取整。例如,输入:4+2*5=输出:14 输入:(4+2)*(2-10)=输出:-48程序如下:#include<stdio.h>#include<stdlib.h>#include<malloc.h>#define OK 1#define ERROR 0#define OVERFLOW -2#define STACK_INIT_SI
7、ZE 100 /存储空间初始分配量#define STACKINCREMENT 10 /存储空间分配增量typedef struct/定义运算符栈数据类型 char *base; char *top; int stacksize;SqStack1;typedef struct/定义操作数栈数据类型 int *base; int *top; int stacksize;SqStack2;int InitStack1(SqStack1 &S)/构造一个空的运算符栈 S.base=(char *)malloc(STACK_INIT_SIZE*sizeof(char); if(!S.base)
8、 exit(OVERFLOW); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK;/InitStack1int InitStack2(SqStack2 &S)/构造一个空的操作数栈 S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int); if(!S.base) exit(OVERFLOW); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK;/InitStack2char GetTop1(SqStack1 S)/若栈不空,则用ch
9、ar型元素e返回S的栈顶元素,并返回OK;否则返回ERROR char e; if(S.top=S.base) return ERROR; e=*(S.top-1); return e;/GetTop1int GetTop2(SqStack2 S)/若栈不空,则用int型元素e返回S的栈顶元素,并返回OK;否则返回ERROR int e; if(S.top=S.base) return ERROR; e=*(S.top-1); return e;/GetTop2int Push1(SqStack1 &S,char e)/插入char型元素e为新的栈顶元素 if(S.top-S.base
10、>=S.stacksize) S.base=(char *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(char); if(!S.base) exit(OVERFLOW); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; *S.top+=e; return OK;/Push1int Push2(SqStack2 &S,int e)/插入int型元素e为新的栈顶元素 if(S.top-S.base>=S.stacksize) S.base=(int *)re
11、alloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int); if(!S.base) exit(OVERFLOW); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; *S.top+=e; return OK;/Push2int Pop1(SqStack1 &S,char &e)/若栈不空,则删除S的栈顶元素,用char型元素e返回其值,并返回OK;否则返回ERROR if(S.top=S.base) return ERROR; e=*-S.top; return OK;
12、/Pop1int Pop2(SqStack2 &S,int &e)/若栈不空,则删除S的栈顶元素,用int型元素e返回其值,并返回OK;否则返回ERROR if(S.top=S.base) return ERROR; e=*-S.top; return OK;/Pop2char Precede(char a,char b)/比较两个相继出现的运算符a和b间的优先级关系switch(a)case '+':switch(b)case'+':return'>'break;case'-':return'>
13、;'break;case'*':return'<'break;case'/':return'<'break;case'(':return'<'break;case')':return'>'break;case'=':return'>'break;case'':return'<'break;case'-':switch(b)case'+
14、39;:return'>'break;case'-':return'>'break;case'*':return'<'break;case'/':return'<'break;case'(':return'<'break;case')':return'>'break;case'=':return'>'break;case'':ret
15、urn'<'break;case'*':switch(b)case'+':return'>'break;case'-':return'>'break;case'*':return'>'break;case'/':return'>'break;case'(':return'<'break;case')':return'>'break;
16、case'=':return'>'break;case'':return'<'break;case'/':switch(b)case'+':return'>'break;case'-':return'>'break;case'*':return'>'break;case'/':return'>'break;case'(':return
17、39;<'break;case')':return'>'break;case'=':return'>'break;case'':return'<'break;case'':switch(b)case'+':return'>'break;case'-':return'>'break;case'*':return'>'break;case
18、9;/':return'>'break;case'(':return'<'break;case')':return'>'break;case'=':return'>'break;case'':return'>'break;case'(':switch(b)case'+':return'<'break;case'-':return'<
19、'break;case'*':return'<'break;case'/':return'<'break;case'(':return'<'break;case')':return'='break;case'':return'<'break;case')':switch(b)case'+':return'>'break;case'-':
20、return'>'break;case'*':return'>'break;case'/':return'>'break;case')':return'>'break;case'=':return'>'break;case'':return'>'break;case'#':switch(b)case'+':return'<'brea
21、k;case'-':return'<'break;case'*':return'<'break;case'/':return'<'break;case'(':return'<'break;case'=':return'='break;case'':return'<'break;/Precedeint pow(int a,int b)/求幂函数 int x; for(x=1;b
22、>0;b-) x=x*a; return x;/powint Operate(int a,char theta,int b)/操作数a和b进行运算 switch(theta)case'+':return(a+b);case'-':return(a-b);case'*':return(a*b);case'/':return(a/b);case'':return(pow(a,b);/Operateint In(char c)/判断字符c是否为运算符if(c!='+'&&c!='-'&&c!='*'&&c!='/'&&c!=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 空气源热泵施工组织设计
- 我国参与国际分工的优势变化及其在产业发展定位中的作用
- 浅谈鲁迅小说中的环境描写
- 我国区域性商业银行助力中小企业融资策略论析
- 我国劳动者休息权法律保障制度的困境与突破:基于现实与法理的双重审视
- 2026福建泉州南安市文昌实验幼儿园招聘专任教师保育员保健医生财务备考题库及答案详解(考点梳理)
- 我国前十大券商证券分析师投资评级:有效性剖析与影响因素探究
- 金融市场入门核心知识解读
- 我国刑事庭前会议制度的司法实践审视与完善路径探索
- 创新教学法效果调查问卷设计
- 高压旋喷桩止水防渗施工方案
- 中建建筑电气系统调试指导手册
- 安全生产麻痹思想侥幸心理
- 2026年浙江高考地理试题及答案
- 护理护理评估工具与应用
- 2025年孵化器与加速器发展项目可行性研究报告
- 消防廉洁自律课件大纲
- 道路二灰碎石基层施工技术方案及质量控制
- DB37∕T 4491-2021 三倍体单体牡蛎浅海筏式养殖技术规范
- 2025年注册监理工程师继续教育市政公用工程专业考试题及答案
- (2025)新课标义务教育数学(2022年版)课程标准试题库(附含答案)
评论
0/150
提交评论