首页 数据结构栈和队列实验报告

数据结构栈和队列实验报告

举报
开通vip

数据结构栈和队列实验报告南京信息工程大学 实验(实习)报告 实验(实习)名称    栈和队列      日期  2017.11.8  得分    指导老师  崔萌萌  系  计算机系  专业  软件工程  年级 2016 班次 (1) 姓名        学号            一、实验目的 1、学习栈的顺序存储和实现,会进行栈的基本操作 2、掌握递归 3、学习队列的顺序存储、链式存储,会进行队列的基本操作 4、掌握循环队列的表示和基本操作 二、实验内容 1、用栈解决以下问题: (1)对于输入的任意一个非负十进制数,显示输出与其...

数据结构栈和队列实验报告
南京信息工程大学 实验(实习)报告 实验(实习)名称    栈和队列      日期  2017.11.8  得分    指导老师  崔萌萌  系  计算机系  专业  软件工程  年级 2016 班次 (1) 姓名        学号            一、实验目的 1、学习栈的顺序存储和实现,会进行栈的基本操作 2、掌握递归 3、学习队列的顺序存储、链式存储,会进行队列的基本操作 4、掌握循环队列的 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示和基本操作 二、实验 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 1、用栈解决以下问题: (1)对于输入的任意一个非负十进制数,显示输出与其等值的八进制数,写出程序。 (2)表达式求值,写出程序。 2、用递归写出以下程序: (1)求n!。 (2)汉诺塔程序,并截图显示3、4、5个盘子的移动步骤,写出移动6个盘子的移动次数。 3、编程实现:(1)创建队列,将asdfghjkl依次入队。(2)将队列asdfghjkl依次出队。 4、编程实现创建一个最多6个元素的循环队列、将ABCDEF依次入队,判断循环队列是否队满。 三、实验步骤                          1.栈的使用 1.1 用栈实现进制的转换: 代码如下: #include #include using namespace std; int main() { stack s; //栈s; int n,radix; printf("请输入要转换的十进制非负整数: "); scanf("%d",&n); printf("请输入目标进制: "); scanf("%d",&radix); printf("转换为%d进制: ",radix); while(n) { s.push(n%radix); n /= radix; } while(!s.empty()) { //非空 printf("%d",s.top()); s.pop(); } printf("\n"); return 0; } 运行结果如下: 2.2 求表达式的值 代码如下: #include #include #include #include #define true 1 #define false 0 #define OPSETSIZE 8 typedef int Status; unsigned char Prior[8][8] = {  //运算符优先级表 //      '+' '-' '*' '/' '(' ')' '#' '^' /*'+'*/ '>','>','<','<','<','>','>','<', /*'-'*/ '>','>','<','<','<','>','>','<', /*'*'*/ '>','>','>','>','<','>','>','<', /*'/'*/ '>','>','>','>','<','>','>','<', /*'('*/ '<','<','<','<','<','=',' ','<', /*')'*/ '>','>','>','>',' ','>','>','>', /*'#'*/ '<','<','<','<','<',' ','=','<', /*'^'*/ '>','>','>','>','<','>','>','>' }; typedef struct StackChar { //StackChar类型的结点SC char c; struct StackChar *next; }SC; typedef struct StackFloat { //StackFloat类型的结点SF float f; struct StackFloat *next; }SF; SC* Push(SC* s,char c) //SC类型的指针Push,返回p { SC* p = (SC* )malloc(sizeof(SC)); p->c = c; p->next = s; return p; } SF* Push(SF* s,float f) //SF类型的指针Push,返回p { SF* p = (SF* )malloc(sizeof(SF)); p->f = f; p->next = s; return p; } SC* Pop(SC* s) //SC类型的指针Pop { SC* q = s; s = s->next; free(q); return s; } SF* Pop(SF* s) //SF类型的指针Pop { SF* q = s; s = s->next; free(q); return s; } float Operate(float a,unsigned char theta, float b)      //计算函数Operate { switch(theta) { case '+': return a+b; case '-': return a-b; case '*': return a*b; case '/': return a/b; case '^': return pow(a,b); default : return 0; } } char OPSET[OPSETSIZE] = {'+','-','*','/','(',')','#','^'}; Status In(char Test,char *TestOp) { int Find = false; for (int i=0; i< OPSETSIZE; i++) { if(Test == TestOp[i])  Find = true; }  return Find; } Status ReturnOpOrd(char op,char *TestOp) { for(int i=0; ic != '#') { if (!In(*c, OPSET)) { Dr[0] = *c; strcat(TempData,Dr);          //字符串连接函数 c++; if (In(*c, OPSET)) { Data = atof(TempData);    //字符串转换函数(double) OPND = Push(OPND, Data); strcpy(TempData,"\0"); } } else { //不是运算符则进栈 switch (precede(OPTR->c, *c)) { case '<': //栈顶元素优先级低 OPTR=Push(OPTR, *c);  c++;  break; case '=': //去括号并接收下一字符 OPTR = Pop(OPTR);  c++;  break; case '>': //退栈并将运算结果入栈 继续阅读
本文档为【数据结构栈和队列实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_721103
暂无简介~
格式:doc
大小:29KB
软件:Word
页数:0
分类:互联网
上传时间:2019-02-16
浏览量:45