![]() |
#2
小小小火柴2012-10-30 21:07
首先,这个程序的作用只是判断()是否配对,并没有其他作用!
#include<iostream> using namespace std; class link { public: char data; link *next; }; class linkstack { public: link *top; void inistack()//栈的初始化 { top=new link; top->next=NULL; } void push(char x)//进栈 { link *s=new link; s->data=x; s->next=top->next; top->next=s; } void pop()//退栈 { link *s=top->next; if(s!=NULL) { top->next=s->next; delete s; } } char gettop() { if(top->next!=NULL) return (top->next->data); else return NULL; } bool empty() { if(top->next==NULL) return true; else return false; } int yn() { char c; int sign=1; inistack(); cout<<"请输入表达式,并以=结束:"; c=getchar(); while(c!='=') { switch(c) { case '('://扫描到'('入栈 push(c); break; case ')': {if(gettop()=='(') pop(); else sign=0; break;} } if(sign==0) break; else c=getchar(); } if(!empty()) sign=0; return sign; } void judgeout(int a) { if(a==1) cout<<"括号配对正确\n"; else if(a==0) cout<<"括号配对错误\n"; } }; void main() { int n; linkstack s; n=s.yn(); s.judgeout(n); } |
求一个栈的操作和实现程序