求一个栈的操作和实现程序
求一个栈的操作和实现程序
首先,这个程序的作用只是判断()是否配对,并没有其他作用!
#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);
}