- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
同济大学C#语言做堆栈计算器
堆栈计算器的做法:一 要求:实现加减乘除乘方及左右括号的基本算法二 使用软件:visual stdio 2008,C#语言编写最后画面:三:写软件过程:首先创建堆栈:这里用的是链表的堆栈,就要添加类Node,定义节点,节点定义成String类型的,方便后来的计算节点: public class Node { public string str; public Node next; public Node(string str) { this.str = str; this.next = null; } }堆栈程序的编写,实现先进先出,这是计算器的核心,再添加类,命名为Stack,主要实现进栈,出栈,获得当前的数据等。堆栈:public class Stack { Node head; public Stack() { head = null; } public Stack(string str) { Node newnode = new Node(str); head = newnode; } public bool isEmpty() { return head == null; } public string getValue() { return head.str; } public void push(string value) { Node newnode = new Node(value); if (isEmpty()) head = newnode; else { newnode.next = head; head = newnode; } } public void pop(out string value) { value = -1; if (isEmpty()) return; value = head.str; head = head.next; } }主程序的编写,主要是等号的编写,这是实现的最重要的部分主程序:public partial class Form1 : Form { public Form1() { InitializeComponent(); } string exp;//算式 char[] getChar;//将算式分割成字符的数组 string result=0; double tempRes = 0; Stack shuStack = new Stack();//数栈 Stack fuStack = new Stack(#);//运算符栈 string op1 = ; string op2 = ; string operand = ; char[] allYunsf={#,+,-,*,/,(,),^};//char[] a=exp.split() public bool isCaozuoshu(char cchar)//判断一个字符是否为操作数 { bool flag = false; for (int i = 0; i allYunsf.Length; i++) { if (cchar == allYunsf[i]) { flag = true; break; } } return flag; } public int beforeStack(string befSta)//进栈前算符优先级,左括号进栈前优先级最高,右括号进栈前优先级最低 { switch (befSta) { case #: return 0; case ): return 1; case +: return 2; case -: return 3; case *: return 4; case /: return 5; case ^: return 6; case (: return 7; default: return -1; } } public int inStack(string inSta)//进栈后算符优先级,左括号进栈后优先级最低,右括号进栈后优先级最高 { switch (inSta) { case #: return 0; case (: return 1; case +: return 2; case -: return 3; case *: return 4; case /: return 5; case ^: return 6; case ): return 7; default: return -1; } } public int numKuohao()//查找算式头部有几个(,并返回 { int n = 0; while (getChar[n] == () { n++; } return n; } private void btnCal_Click(object sender,
您可能关注的文档
- 单元备课Recycle 1.doc
- 查看Solaris系统硬件配置的命令及用法.doc
- toeic难词总结.doc
- 2014新版五年级recycle1.doc
- 大学生兼职现状及影响研究.doc
- 时文阅读 Conflict in the Middle East.doc
- 四年级上册Recycle2教案.doc
- 4上3单元和recycle1.doc
- Making Friends 教学设计.doc
- 三年级下册Recycle1教案.docx
- 第六单元组合图形的面积(拓展卷)-五年级上册数学单元培优进阶练(A4版,含答案解析)(北师大版).docx
- 第七单元可能性(基础卷)-五年级上册数学单元培优进阶练(A4版,含答案解析)(北师大版).docx
- 第三单元倍数与因数(基础卷)-五年级上册数学单元培优进阶练(A4版,含答案解析)(北师大版).docx
- 第三单元倍数与因数(拓展卷)-五年级上册数学单元培优进阶练(A4版,含答案解析)(北师大版).docx
- 第六单元组合图形的面积(提升卷)-五年级上册数学单元培优进阶练(A4版,含答案解析)(北师大版).docx
- 第四单元多边形的面积(拓展卷)-五年级上册数学单元培优进阶练(A4版,含答案解析)(北师大版).docx
- 第二单元轴对称和平移(基础卷)-五年级上册数学单元培优进阶练(A4版,含答案解析)(北师大版).docx
- 第二单元轴对称和平移(拓展卷)-五年级上册数学单元培优进阶练(A4版,含答案解析)(北师大版).docx
- 第二单元轴对称和平移(提升卷)-五年级上册数学单元培优进阶练(A4版,含答案解析)(北师大版).docx
- 第四单元多边形的面积(基础卷)-五年级上册数学单元培优进阶练(A4版,含答案解析)(北师大版).docx
文档评论(0)