第4 章 链式存储的表、栈和队列.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4 章 链式存储的表、栈和队列

void LinStackT::push(const Titem) { StackNodeT *newNode=new StackNodeT(item,top); top=newNode; size++; } template class T T LinStackT::pop(void) { if(size==0) { cerr堆栈空!endl; exit(1); } StackNodeT *p=top-next; T data=top-data; delete top; size--; top=p; return data; } 表达式计算 输入后缀表达式,计算表达式的值。 #include ctype.h #include LinStack.h template class T class Post { private: LinStackT s; //定义一个栈 void Enter(T num); //将数据元素T入栈 int Getdata(T op1,T op2); //出栈顶元素分 别到op1和op2中 void computer(char op); //做相应的运算,将结果入栈 public: Post(void){}; void run(void); void Clear(void); }; templateclass T void PostT::Enter(T num) { s.Push(num); } template class T int Getdata(T op1,T op2) { if(s.StackEmpty()) { cerr栈空!endl; return 0; } op1=s.Pop(); if(s.StackEmpty()) { cerr缺少操作数!endl; return 0; } op2=s.Pop(); return 1; } template class T void PostT::computer(char op) { int result; T operand1,operand2; result=Getdata(operand1,operand2); if(result==1) switch(op) { case +:s.Push(operand2+operand1);break; case -:s.Push(operand2-operand1);break; case *:s.Push(operand2*operand1);break; case /:s.Push(operand2/operand1);break; } else s.ClearStack(); } template class T void PostT::run(void) { char c; T newoperand; cout输入后缀表达式,以#结束!endl; while(cinc,c!=#) { switch(c) { case +: case -: case *: case/: Compute(c); break; default:cin.putback(c); //是操作数,入栈 cinnewoperand; Enter(newoperand); break; } } if(!s.StackEmpty()) cout计算结果为:s.Peek()endl; } template class T void PostT::Clear(void) { s.ClearStack(); } #include Post.h void main(void) { Postfloat exp; exp.run(); } int linqueue::del(void) { if(size==0) { cerr“队列为空endl; exit(1); } node *p=front-next; int x=front-data; delete front; front=p; if(front==NULL) rear=NULL; size--; return x; } void radixsort(int a[],int n,int m,int d) { int i,j,k,power=1; linqueue *tub=new linqueue[d]; for(i=0;im;i++)//进行m次排

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档