括弧匹配……

來源:互聯網
上載者:User

問題串連……

#include<stdio.h>  #include<conio.h>   void main()   {      char a[50],b[50];      int i,j,flag;      flag=i=j=0;      gets(a);      for(i=0;a[i]!='\0';i++)      {                 if(a[i]=='(')  b[j++]=1;        if(a[i]==')')if(b[--j]!=1){flag=1;break;}        if(a[i]=='[')  b[j++]=2;        if(a[i]==']')  if(b[--j]!=2){flag=1;break;}        if(a[i]=='{') b[j++]=3;        if(a[i]=='}')if(b[--j]!=3){flag=1;break;}    }      if(flag==0)          printf("\nYES\n");            if(flag==1)          printf("\nNO\n");         getch();   }  

棧方法……

#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR 0#define Stack_Size 100#define ElemType chartypedef struct Stack{    ElemType base[Stack_Size];    int top;}SqStack;int InitStack(SqStack *S)/* 初始化棧 */{     S->top=-1;    return OK;}int Push(SqStack *S,ElemType e)/* 進棧操作 */{    if(S->top>=Stack_Size-1)        return ERROR;    S->top++;    S->base[S->top]=e;    return OK;}int Pop(SqStack *S)/* 出棧操作 */{    if(S->top==-1)        return ERROR;    S->top--;    return OK;}char convert(ElemType e)/* 如果左括弧則轉換成右返回 */{    if(e=='{')        e='}';    if(e=='[')        e=']';    if(e=='(')        e=')';    return e;}int Check(SqStack *S,ElemType *p)/* 檢查匹配括弧函數 */{     while(*p!='\0')    {        if(*p=='{'||*p=='['||*p=='(')/* 如果是左括弧則轉換成右括弧存入棧中 */            if(Push(S,convert(*p))==0)                return ERROR;        if(*p=='}'||*p==']'||*p==')')/* 如果是右括弧且與最近存入棧中的括弧相同則出棧一個元素,不同則不匹配。不是右括弧則繼續檢查匹配 */        {            if(*p==S->base[S->top])            {                if(Pop(S)==0)                    return ERROR;            }            else                return ERROR;        }        p++;            }    if(S->top==-1)/* 如果S->top==-1則表示所有括弧匹配完,即完全符合。否則,還有未匹配完的 */        return OK;    else        return ERROR;}void main(){    SqStack S;    char p[50];    InitStack(&S);    scanf("%s",p);    if(Check(&S,p)==0)        printf("\nmismatch\n");    else         printf("\nmatched\n");}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.