1 / 12
文档名称:

《数据结构》实验报告.docx

格式:docx   大小:63KB   页数:12页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

《数据结构》实验报告.docx

上传人:ttteee8 2019/5/18 文件大小:63 KB

下载得到文件列表

《数据结构》实验报告.docx

相关文档

文档介绍

文档介绍:实验地点实验主题实验2栈的相关运算实验目的帮助学生了解栈的特性,以便灵活运用。熟练掌握栈和有关队列的各种操作和应用。实验内容1) 对于给定的100以内十进制整数转二进制整数;2) 设一个算术表达式只包括一位整数和运算符“+”、、“/”(如:2+3*5);请将该屮缀表达式(波兰式)通过代码转换成后缀表达式(逆波兰式)。如若波兰式为2+3*5则逆波兰式:235*+3) 对于给定的逆波兰式求结果。如235*+的结果为17 程序1: 「解题思路(使用伪代码表示算法):实验步骤〃十进制整数转二进制整数算法voidPrintfDtoB(intn){while(n){Push(s,n%2);〃将除2的余数入栈;n=n/2;}while(!Isempty(s))//当栈非空时栈中元素出栈{Pop(s,e);printf(,,%dM,e);}}#include<>#include<>#defineERROR0#defineOK1#defineInitSize100typedefintElemType;typedefintStatus;typedefstruct{ElemType*base;ElemType*top;intstacksize;}SqStack;〃初始化堆栈StatusInitStack(SqStack*s){(*s).base=(ElemType*)malloc(sizeof(ElemType)*InitSize);if(!(*s).base)returnERROR;(*s).top=(*s).base;(*s).stacksize=InitSize;returnOK;}〃压栈StatusPush(SqStack*s,ElemTypee){〃判栈满if((*s).top-(*s).base==(*s).stacksize)returnERROR;*((*s).top)=e;(*s).top++;returnOK;}〃出栈StatusPop(SqStack*s,ElemType*e){〃判栈空if((*s).top==(*s).base)returnERROR;(*s).top—;*e=*((*s).top);returnOK;}intIsempty(SqStacks){if(==)return1;elsereturn0;}〃十进制整数转二进制整数算法voidPrintfDtoB(intn){SqStacks;inte;InitStack(&s);while(n){Push(&s,n%2);//将除2的余数入栈;n=n/2;}printf(”对应的二进制数是:“);while(!Isempty(s))//当栈非空时栈中元素出栈{Pop(&s,&C);printf("%d",e);}printf(”\n”);}voidmain(){intn;printf(n请输入待转的十进制数:“);scanf(”%d“,&n);PrintfDtoB(n);运行结果(截屏)j夕"D:\VC6SP6\・ - □X?191Att^7nJTVls33潮二进制燧,100001•:解题思路(使用伪代码表示算法):〃中缀表达式转后缀表达式算法/*从左到右扫描向量1FX,重复下述两步操作,直到表达式尾:从IFX中取出下个ch(数字、运算符、左括号、右括号);CASETOKENOF'(‘: 将ch压入栈S;: 退栈并将退栈元素送PFX,直到碰到左括号,左括号退栈不送PFXo操作数:将操作数直接送入PFX;操作符:如栈空或ch比栈顶元素优先级高,将ch进栈;否则,退栈并将退栈元素送入PFX,然后再将ch与新栈顶元素比较之;当遇到中缀表达式结束符号,连续退栈并送退栈元素到PFX,直至栈空。实现代码:#include<>#include<>#defineERROR0#defineOK1#defineInitSize81typedefcharElemType;typedefcharXiangLiang[81J;typedefintStatus;typedefstruct{ElemType水base;ElemType*top;intstacksize;}SqStack;〃初始化堆栈StatusInitStack(SqStack*s){(*s).base=(ElemType*)malloc(sizeof(ElemType)*InitSize);if(!(*s).base)returnERROR;(*s).top=(*s).base;(*s).stacksize=InitSize;returnOK;}〃压栈StatusPush(S