数据结构—数制转换.doc

上传人:pu****.1 文档编号:543036017 上传时间:2023-06-09 格式:DOC 页数:5 大小:119KB
返回 下载 相关 举报
数据结构—数制转换.doc_第1页
第1页 / 共5页
数据结构—数制转换.doc_第2页
第2页 / 共5页
数据结构—数制转换.doc_第3页
第3页 / 共5页
数据结构—数制转换.doc_第4页
第4页 / 共5页
数据结构—数制转换.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《数据结构—数制转换.doc》由会员分享,可在线阅读,更多相关《数据结构—数制转换.doc(5页珍藏版)》请在金锄头文库上搜索。

1、 实验一 栈的应用 数制转换1程序设计简介 该程序以顺序栈为工具,实现十进制数到其他一至十六进制数的转换。设计中采用了一个循环,使得用户可重复进行数制转换。需转换的十进制数和要转换的数制均通过交互方式输入。因采用了顺序栈,程序中包含SqStack.h 。2源程序#include/cout,cin#includeprocess.h/exit()#includestdio.h/EOF,NULL#includeSqStack.htemplatevoid convert(T n,T m)/把十进制数n转换为m进制数T e;char c;SqStack s(10);cout需转换的十进制数是:nendl

2、;while(n)try s.Push(n%m);catch(char *err) couterrendl; n=n/m;cout转换为m进制数为:;while(!s.StackEmpty()try e=s.Pop (); if(e10) coutet; else c=A+e-10; coutct; catch(char *err) couterrendl; /coutendl;void main()int n,m;/分别存放被转换的数及转换数制char ans; /工作变量,存放是否继续的应答int flag=1;/工作变量,是否继续的标志while(flag)coutn; coutm; c

3、onvert(n,m);cout继续吗(Y/N)?ans;if(ans=Y|ans=y) flag=1;else flag=0;cout程序运行结束,BYe-Bye!endl;/while/main3程序运行结果实验二 表达式括号匹配配对判断问题1问题描述假设一个算法表达式中包括圆括号、方括号两种,设计判别表达式中括号是否正确匹配的算法。2基本要求(1)表达式用字符串表示,以初始化方式创建或以交互方式创建;(2)借助栈进行算法设计;(3)输出:显示表达式,并给出匹配处理结果:匹配、不匹配(右括号多、左括号多等)。3思想step1:创建一个栈;step2:从左到右扫描表达式,直至表达式结束;2.

4、1:如果是左括号,入栈;取下一个字符;2.2:如果是右括号: 2.2.1:与栈顶括号匹配,则出栈,消去一个左括号,取下一个字符; 2.2.2:与栈顶括号不匹配,得到“不匹配”,结束; 2.2.3:栈空,得到“不匹配”,结束;step3:若栈空,则表达式中括号匹配,否则不匹配。4源程序#include/cout,cin#includeprocess.h/exit()#includestdio.h/EOF,NULLstruct Node int top; char datastacksize; ; Node node; void InitStack( ) / 初始化栈 node.top=-1; s

5、qstack(int n) base=newTm; if(base=NULL) cout创栈失败; exit(1); stacksize=m;top=-1; voidPush(charx) if(node.top=stacksize-1); node.top+; node.datanode.top=x; void Pop(char &x) if(node.top=-1); x=node.datanode.top-; for(i=0;*(p+i)!=0&count!=0;i+) switch (*(p+i) case ( :Push(*(p+i) ;break ; case :Push(*(p+

6、i) ) ;break ; case ) :Pop(e) ;if ( e!=( )count=0 ;break ; case :Pop(e) ;if ( e!= )count=0 ;break ; default:break; if ( !StackEmpty () | count=0 ) cout不匹配endl;cout继续吗?(y/n)s;if(s=y|s=Y)goto input;else if(s=n|s=N)cout谢谢,再见!endl;return 0; else cout匹配endl;cout继续吗?(y/n)s;if(s=y|s=Y)goto input;else if(s=n|s=N)cout谢谢,再见!endl;return 0;5程序运行结果:总结与心得:这次实验中有些C+语句有些遗忘,编写源代码时还顺带复习了一下大一的C+知识,才还算可以地解决了问题,但自己做的程序还有不足之处,比如要求给出匹配处理结果:匹配、不匹配(右括号多、左括号多等),由于时间和能力关系我只能给出“匹配”、“不匹配”,不能判断是右括号多还是左括号多,但以后我将请教圆满实现了该程序的同学,将自己的思想、程序进行改善,争取更大的进步!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号