日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

栈的应用--括号匹配的检验

發布時間:2023/12/1 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 栈的应用--括号匹配的检验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

算法中設置一個棧,每次讀入一個括號,若是右括號,則或者與置于棧頂的括號匹配,或者是不合法的情況,若是左括號,則入棧。若算法結束,棧是空的,則括號合法。
括號匹配函數

Status bracket_match(){SElemType brackets[100];int i;SElemType e;SqStack S;Init_Stack(S);scanf("%s",brackets);while(brackets[i]!='\0'){if(i==0&&(brackets[i]=='}'||brackets[i]==']'||brackets[i]==')'))return ERROR;else{switch(brackets[i]){case '}':Get_Top(S,e);if(e=='{')Pop(S,e);break;case ']':Get_Top(S,e);if(e=='[')Pop(S,e);break;case ')':Get_Top(S,e);if(e=='(')Pop(S,e);break; default:Push(S,brackets[i]);break;}}i++;}if(Stack_Empty(S)){Destroy_Stack(S);return OK;}else{Destroy_Stack(S);return ERROR;} }

全部表示和實現,以及測試代碼

#include<stdio.h> #include<stdlib.h>#define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define OK 1 #define TRUE 1 #define FALSE 0 #define ERROR 0typedef int Status; typedef char SElemType;typedef struct{SElemType *base;SElemType *top;int stacksize; }SqStack;Status Init_Stack(SqStack &S){S.base=(SElemType*)malloc(sizeof(SElemType)*STACK_INIT_SIZE);if(!S.base){printf("Merry Error\n");exit(0);}S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK; }Status Clear_Stack(SqStack &S){S.top=S.base;return OK; }Status Stack_Empty(SqStack S){if(S.top==S.base){return TRUE;}else{return FALSE;} }int Stack_Length(SqStack S){int length=0;while(S.base!=S.top){S.top--;length++;}return length; } Status Get_Top(SqStack S,SElemType &e){if(S.base==S.top){return ERROR;}else{e=*(S.top-1);return OK;} }Status Push(SqStack &S,SElemType e){if(S.top-S.base>=S.stacksize){S.base=(SElemType *)realloc(S.base,sizeof(SElemType)*(S.stacksize+STACKINCREMENT));if(!S.base){printf("Merroy Error!\n");exit(0);}}S.stacksize+=STACKINCREMENT;*S.top++=e;return OK; }Status Pop(SqStack &S,SElemType &e){if(S.base==S.top){return ERROR;}e=*(--S.top);return OK; }Status Destroy_Stack(SqStack &S){S.top=S.base;free(S.base);return OK; }Status bracket_match(){SElemType brackets[100];int i;SElemType e;SqStack S;Init_Stack(S);scanf("%s",brackets);while(brackets[i]!='\0'){if(i==0&&(brackets[i]=='}'||brackets[i]==']'||brackets[i]==')'))return ERROR;else{switch(brackets[i]){case '}':Get_Top(S,e);if(e=='{')Pop(S,e);break;case ']':Get_Top(S,e);if(e=='[')Pop(S,e);break;case ')':Get_Top(S,e);if(e=='(')Pop(S,e);break; default:Push(S,brackets[i]);break;}}i++;}if(Stack_Empty(S)){Destroy_Stack(S);return OK;}else{Destroy_Stack(S);return ERROR;}}int main(){while(1){if(bracket_match())printf("Brackets Is OK!\n");else{printf("Wrong Brackets\n");}}return 0; }


歡迎留言交流。。。

總結

以上是生活随笔為你收集整理的栈的应用--括号匹配的检验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。