注册 登录
编程论坛 VC++/MFC

括号是否配对

小小小火柴 发布于 2012-10-16 21:42, 380 次点击
#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);
}
就是括号配对问题。我只需要括号是否配对,不需要考虑其他问题。比如,当我输入:7+8)=时,出现的是:括号配对正确。但是明明就不配对,求高人指点,我算法错在哪里?
0 回复
1