栈的简单应用(精品)

上传人:cl****1 文档编号:464395372 上传时间:2023-03-09 格式:DOC 页数:9 大小:89KB
返回 下载 相关 举报
栈的简单应用(精品)_第1页
第1页 / 共9页
栈的简单应用(精品)_第2页
第2页 / 共9页
栈的简单应用(精品)_第3页
第3页 / 共9页
栈的简单应用(精品)_第4页
第4页 / 共9页
栈的简单应用(精品)_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《栈的简单应用(精品)》由会员分享,可在线阅读,更多相关《栈的简单应用(精品)(9页珍藏版)》请在金锄头文库上搜索。

1、/头文件“stack.h”#ifndef STACK_H #define STACK_H template class Nodepublic:Node();Node(const Type& date);Node();/private:Type Date;Node *Next;template class Stackpublic:Stack();/Head-Date不可知Stack();void Puah_Head(const Node& node);void Pop_Head();Type& Top();void MakeEmpty();void Travel();bool IsEmpty()

2、;/private:Node *Head;template Stack:Stack()Head=new Node;templatevoid Stack:MakeEmpty()Node *cur=Head;for(;Head-Next!=NULL;) cur=Head-Next;Head-Next=cur-Next;delete cur;template Stack:Stack()if(Head-Next!=NULL) MakeEmpty();delete Head;template void Stack:Puah_Head(const Node& node) Node* cur=new Nod

3、e(node); if(Head-Next!=NULL) cur-Next=Head-Next; Head-Next=cur;template void Stack:Pop_Head()Node* cur=new Node;if(Head-Next=NULL) return;cur=Head-Next;Head-Next=cur-Next;delete cur;template Type& Stack:Top() if(Head-Next=NULL) coutStack为空Date;return Head-Next-Date;template void Stack:Travel()Node*

4、cur=new Node;cur=Head;for(;cur-Next!=NULL;)cur=cur-Next;coutDateendl;template bool Stack:IsEmpty()if(Head-Next=NULL) return true;return false;template Node:Node():Next(NULL) ;template Node:Node(const Type& date):Date(date),Next(NULL) ;template Node:Node() ;#endif/主程序cpp文件“main.cpp”#include#include#i

5、nclude string#includestack.husing namespace std;char* Change(int number,int a);/把number转换为a进制的一个数; string PostFix(string exp);/把一个中缀改为后缀;int FindNumber(char a);/把字符转换为数字int Post(string postfixexp);/计算后缀表达式char* n;int ShuRu(string ,int& i);/从第i个字符开始,将其到空格之前的所有字符换算成intvoid main() /字符串格式 每个操作数或者操作符号后面加

6、一个空格,最后一个操作符号可以不加/数据为intstring a=3424 665 + 542 / 85 * 544 - 7655 +;int b=Post(a);couta的计算结果为bendl;/*char* a=Change(15,16); /15转化为16进制coutaendl;*/*string infixexp; /中缀转换为后缀,输入eof停止cout连续输入直到输入eof,即ctrl+zendl;cout操作符仅限 ( + - * / )infixexp;) coutPostfix expression isPostFix(infixexp)endl; */int Post(s

7、tring postfixexp) postfixexp.append(2, ); Stack* NumberStack=new Stack; int i=0; int number; int first; int last; for(;postfixexpi!=32;) int ch; ch=FindNumber(postfixexpi); switch(ch) case 0:number=ShuRu(postfixexp,i);NumberStack-Puah_Head(number);break;case 2:first=NumberStack-Top();NumberStack-Pop

8、_Head();last=NumberStack-Top();NumberStack-Pop_Head();number=first+last;NumberStack-Puah_Head(number);i+;break;case 3:first=NumberStack-Top();NumberStack-Pop_Head();last=NumberStack-Top();NumberStack-Pop_Head();number=last-first;NumberStack-Puah_Head(number);i+;break;case 4:first=NumberStack-Top();N

9、umberStack-Pop_Head();last=NumberStack-Top();NumberStack-Pop_Head();number=first*last;NumberStack-Puah_Head(number);i+;break;case 5:first=NumberStack-Top();NumberStack-Pop_Head();last=NumberStack-Top();NumberStack-Pop_Head();number=last/first;NumberStack-Puah_Head(number);i+;break; i+; number=Number

10、Stack-Top();return number;int ShuRu(string a,int&i)int b10;int num=0;int k=0;int jie=1;for(;ai!=32;i+,k+) bk=ai-48; jie=jie*10;bk=10;for(int j=0;bj10;j+) num=num+bj*jie/10; jie=jie/10; return num;int FindNumber(char a)if(a=() return 1;if(a=+) return 2;if(a=-) return 3;if(a=*) return 4;if(a=/) return

11、 5;if(a=) return 6;return 0;char* Change(int number,int a)Stack* m=new Stack;int zheng=1;n=new char100;char jinzhi=0123456789ABCDEF;/coutnumber转换为aPuah_Head(jinzhinumber%a);for(zheng=0;m-Head-Next!=NULL;zheng+)nzheng=(*m).Top();m-Pop_Head(); nzheng=0; return n;string PostFix(string exp) bool flag=true; int TokenNumber,TopTokenNumber; Stack* OpStack=new Stack; string PostFixExp; string Op=0(+-*/); string Blank= ; int j=exp.length(); if(FindNumber(exp0)1) flag=false; for(int i=0;ij;

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

当前位置:首页 > 建筑/环境 > 施工组织

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