括号匹配的检验,数据结构栈的应用

    科技2024-10-13  20

    #include <iostream> #include<bits/stdc++.h> #define max 100 using namespace std; typedef struct{ char *top; char *base; int size; } Note;

    void initstack(Note *s); char pop(Note &s); void push(Note &s,char ch); char gettop(Note s); int main() {     Note s;     initstack(&s);     int flag=1;     char ch;     cin>>ch;     while(ch!='#'){         switch(ch){     case '(':push(s,ch);break;         case '[':push(s,ch);break;         case '{':push(s,ch);break;

            case ')':if(s.top==s.base||pop(s)!='(') flag=0;         break;         case ']':if(s.top==s.base||pop(s)!='[') flag=0;         break;         case '}':if(s.top==s.base||pop(s)!='{') flag=0;         break;

            }         if(flag==0){             break;         }         cin>>ch;     }

        //cout<<flag;     if(flag==1&&s.top==s.base)

        cout<<"ture";     else cout<<"false";

          // push(s,'a');       //  push(s,'b');        //push(s,'c');   // printf("%c %c %c",pop(s),pop(s),pop(s));   //  printf("%c ",pop(s));    // printf("%c ",pop(s));    // printf("%c ",gettop(s));    // printf("%c ",pop(s));    // printf("%c ",gettop(s));

        return 0; }

    char gettop(Note s){ if(s.top!=s.base)     return *(s.top-1);     else {//printf("ц╩ак");             return 0;}

    }

    char pop(Note &s){ if(s.top-s.base==0){

        //printf("©уак");     exit(0); } s.top--; return *s.top;

    }

    void push(Note &s,char ch){     if(s.top-s.base==s.size){

            //printf("бЗак");         exit(0);     } *s.top=ch; s.top++;

    }

    void initstack(Note *s) {     //s->base=(char *)malloc(max*sizeof(char));     s->base=new char[max];     s->top=s->base;     s->size=max; }

    Processed: 0.019, SQL: 8