北理工数据结构第三章实验报告
更新时间:2023-10-10 13:20:01 阅读量: 综合文库 文档下载
第三章作业
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);
}
stac k
2、简述下列算法的功能(栈的元素类型SElemType为int)。 (1)Ststus algo1(Stack S) { int I, n, A[255]; n=0;
while ( ! StackEmpty(S) ) { n++; Pop(S, A[n]); }
for ( i=1; i<=n; i++ ) Push(S, A[n]); }
将栈S中的元素以出栈的顺序排在数组中,且出栈的先后和数组的序号从小到大一致。栈S变成空栈。然后再从前到后输出数组中的数。 (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); } }
将和e一致的数排到栈底,其他元素前后顺序保持不变。
3、设有4个元素1、2、3、4依次进栈,而出栈操作可随时进行(进出栈可任意交错进行,但要保证进栈次序不破坏1、2、3、4的相对次序),请写出所有可能的出栈次序。
可能次序:(1243)(1234)(1324)(1342)(1432)(2143)(2134)(2341)(2431) 4、写出下列程序段的输出结果(队列中的元素类型QelemType为char)。 viod main ( )
{ Queue Q; InitQueue(Q);
char x=’e’, y=’c’;
EnQueue(Q, ’h’); EnQueue(Q, ’r’); EnQueue(Q, y); DeQueue(Q, x); EnQueue(Q, x); DeQueue(Q, x); EnQueue(Q,’a’); while ( ! QueueEmpty(Q) ) { DeQueue(Q, y); printf(y); } }
答案:cha
5、简述下列算法的功能(栈和队列的元素类型均为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); } }
将队列Q中的元素的出列次序整个颠倒。
(2314)(3214)(3421)(3241)(4321)
6、为了充分利用空间,将两个栈共同存储在长度为n的一维数组中,共享数组空间。设计两个栈共享一维数组的存储表示方式,画出示意图。
栈顶
栈底 栈底
实验二
1、简单计算器。
请按照四则运算加、减、乘、除、幂(^)和括号的优先关系和惯例,编写计算器程序。要求:
① 从键盘输入一个完整的表达式,以回车作为表达式输入结束的标志。 ② 输入表达式中的数值均为大于等于零的整数。中间的计算过程如果出现小数也只取整。
例如,输入:4+2*5=
#include
void translate(char str[],char exp[]) /*将算术表达式转换成后缀表达式*/ {
struct {
char data[MaxSize];
int top; /*top为栈顶*/
}op; /*定义一个含data和top的结构体*/
char ch; int i = 0,t = 0; op.top = -1;
输出:14 输出:-48
输入:(4+2)*(2-10)=
ch = str[i]; /*将str的每一个数转换成ch*/ i++;
while(ch != '\\0') /*ch对应不同的符号的时候对应的转换情况*/ {
switch(ch) {
case '(': /*当是(的时候,将此括号存入栈op*/ op.top++;op.data[op.top]=ch; break;
case ')':
while(op.data[op.top] != '(') /*括号内的转换优先级最高,故先提取表达式*/ {
exp[t]=op.data[op.top]; op.top--; t++; } op.top--; break; case '+': case '-':
while(op.top != -1&&op.data[op.top] != '(') {
exp[t] = op.data[op.top]; op.top--; t++; }
op.top++; /*恢复可插入位置*/ op.data[op.top] = ch; break; case '*': case '/':
while(op.top == '/'||op.top == '*') /*优先级*/ {
exp[t] = op.data[op.top]; op.top--;
t++; } op.top++;
op.data[op.top] = ch; break;
case ' ': /*忽略空格,排除误操作*/ break; default:
while(ch >= '0'&&ch <= '9') {
exp[t] = ch;t++; ch = str[i];i++; } i--;
exp[t] = '#'; /*分隔操作数,为了美观,也为了以后好分隔操作数,呵呵*/ t++; } ch = str[i]; i++; }
while(op.top != -1) /*得到剩下的部分*/ {
exp[t] = op.data[op.top]; t++; op.top--; }
exp[t] = '\\0'; /*表达式结束*/ }
float cal_value(char exp[]) {
struct {
float data[MaxSize]; int top;
}st; /*操作数栈*/ float d;
char ch; int t = 0; st.top = -1; ch = exp[t]; t++;
while(ch != '\\0') {
switch(ch) /*运算主体*/ { case '+':
st.data[st.top-1] = st.data[st.top-1]+st.data[st.top]; st.top--; break; case '-':
st.data[st.top-1] = st.data[st.top-1]-st.data[st.top]; st.top--; break; case '*':
st.data[st.top-1] = st.data[st.top-1]*st.data[st.top]; st.top--; break; case '/':
if(st.data[st.top] != 0)
st.data[st.top-1]=st.data[st.top-1]/st.data[st.top]; else {
printf(\除0是错误的\ } st.top--; break; default: d=0;
while(ch >= '0'&&ch <= '9') /*从后缀表达式中获取操作数,#作用在此体现*/ {
d = 10*d+ch-'0'; ch = exp[t];
t++; } st.top++; st.data[st.top] = d; }
ch = exp[t]; t++; }
return st.data[st.top]; }
int main() /*可以提到前面去*/ {
char str[MaxSize],exp[MaxSize]; /*str为算术表达式,exps为后缀表达式*/
printf(\表达式:\
gets(str); /*输入一个算术表达式*/ translate(str,exp); /*将算术表达式转换成后追表达式*/
printf(\计算结果:%g\\n\通过后缀表达式来求值*/ system(\ return 0; }
正在阅读:
北理工数据结构第三章实验报告10-10
遗传与优生:遗传对体表性状的影响11-07
觉醒年代个人观后感范本例文04-04
暖春三月舞青云散文03-30
Web服务器nginx虚拟主机与反向代理06-25
中国历史地名对照表02-28
四阶段法的应用实例 - 图文03-20
茸茸动物日记11-21
应用写作模拟试题参考答案(一)111-05
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 数据结构
- 理工
- 实验
- 第三章
- 报告
- 毕业设计论文智能温度巡检仪 - 图文
- 教科版小学科学六年级上册《电和磁》教学反思
- 方物Fronware vAccess v2.8系统用户手册 - 图文
- 基于jquery实现ajax无刷新评论
- 流体力学实验指导书
- 中国电信分公司政企客户部2011年上半年工作总结(精)
- 如何成为一个有责任有担当的当代青年学生
- 中共青岛市市北区教育体育局委员会文件
- 连廊人工挖孔桩评估报告
- 2012年招标师项目管理与招标采购模拟题二
- 2012年高中物理青年教师教学基本功竞赛
- 解直角三角函数专题复习
- 布迪厄
- 初中文言文阅读之古今异义
- 热控专业监理实施细则 - 图文
- 2017-2022年中国差旅管理市场专项调研报告(目录) - 图文
- 地测防治水题库5
- 护理工作中告知制度
- 关于开展我校2013年大学生暑期社会实践活动的通知
- 少年宫篮球兴趣班教案