一到数据结构有关问题 求改错
一到数据结构问题 求改错
------解决方案--------------------
第49行i需要初始化吧,int i=0;
------解决方案--------------------
1)Push,Pop做啥用的?????
2)分配的内存要释放
// 输入一个表达式 看它是不是括号配对
#include<iostream>
#include<string>
using namespace std;
struct Stack
{
char *base;
char *top;
int size;
};
void InitStack(Stack &stack,int size)
{
stack.base=new char[size];
stack.top=stack.base;
stack.size=size;
}
void Push(Stack &stack,char s)
{
*stack.top=s;
stack.top++;
}
void Pop(Stack &stack)
{
stack.top--;
}
int main()
{
Stack s;
InitStack (s,20);
char ch[50];
cout << "输入表达式"<<endl;
cin>>ch;
for(int i;i<strlen(ch);i++)
{
if(ch[i]=='(')
{
*s.top=ch[i];
s.top++;
}
else if (ch[i]==')')
{
s.top--;
}
}
if(s.top == s.base)
{
cout<<"表达式的括号是配对的。"<<endl;
}
else
{
cout<<"表达式的括号不是配对的。"<<endl;
}
}
数据结构
------解决方案--------------------
第49行i需要初始化吧,int i=0;
------解决方案--------------------
1)Push,Pop做啥用的?????
2)分配的内存要释放
void DestroyStack(Stack &s){
delete[] s.base;
}
int main()
{
Stack s;
InitStack (s,20);
char ch[50];
cout << "输入表达式"<<endl;
cin>>ch;
for(int i;i<strlen(ch);i++){
//简洁版,可能会出错。
if(ch[i]=='(')
Push(s,ch[i]);
else if (ch[i]==')')
Pop(s);
}
if(s.top == s.base)
{
cout<<"表达式的括号是配对的。"<<endl;
}
else
{
cout<<"表达式的括号不是配对的。"<<endl;
}
DestroyStack(s);
return 0;
}
//精细版
int main(){
Stack s;
InitStack (s,20);
char ch[50];
int error=0;
cout << "输入表达式"<<endl;
cin>>ch;
for(int i;i<strlen(ch);i++)
{
if(ch[i] != ')') Push(s,ch[i]);
else {
while(s.top !=s.base && *(s.top) !='(')
{
Pop(s);
}
if(*s.top !='('){
cout<<"表达式的括号不是配对的,丢失左括号 \'(\'。"<<endl;
error++;
}
}
}
if(error ==0 ){
if(s.top == s.base)
{
cout<<"表达式的括号是配对的。"<<endl;