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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C语言栈括号匹配算法

發布時間:2024/8/1 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言栈括号匹配算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、C語言棧括號匹配算法

部分函數的調用,請參考:https://blog.csdn.net/qq_50504109/article/details/120330818

一起加油兄弟姐妹們!!!沖沖沖

/** * 思想很簡單就是左括號進棧,遇到右括號的時候,就把棧頂元素取出,然后匹配,然后對結果進行不用的處理* 括號匹配算法:* 匹配失敗的可能:* 1、左括號多于有括號:這個時候會出現棧已經空了,但是字符組數還沒有掃描結束;* 2、右括號多于左括號:這個時候會出現棧還有剩余,但是字符數組已經掃描完了;* 3、左括號和右括號不是同一個類型*/#include<stdio.h> #include"InstanceSqeStack.c"int main() {void BreacketMatch(SqeStack *s, char str[]);char str[] = {'(', ')', '{', '[', '}',']', '}','}'};SqeStack *s = InitStack();BreacketMatch(s,str); }void BreacketMatch(SqeStack *s, char *str) {int Match(char left,char rigth);char x = '\0'; //x 是用來記錄出棧的內容// 字符竄數組結束的標記是遇到'\0',所以結束條件時 str[i] != '\0'哦;for (int i = 0; str[i]!='\0'; i++) {switch (str[i]) {case '(':case '[':case '{':push(s,str[i]);break; // 因為只要是左括號都需要進棧,所以寫到上面三行的下面最好case ')':case ']':case '}':if (isEmpty(s)){ //如果是空的話,返回1printf("右括號多余!\n");return;}else{pop(s,&x);if (Match(x,str[i])){// 如果匹配成功,什么都不用做,因為我是先出棧}else{printf("左右括號類型匹配不成功!\n");return;}}}}//到最后還是要判斷一下的,因為上面只有兩種情況我們判斷了,還差一種左括號多余if (isEmpty(s)){printf("匹配成功!\n");}else{printf("左括號匹配多余!!\n");}}int Match(char left,char rigth){//判斷左右括號是不是同一個類型if (left == '(' && rigth == ')'){return 1;}else if (left == '[' && rigth == ']'){return 1;}else if (left == '{' && rigth == '}'){return 1;}else{return 0;}}

總結

以上是生活随笔為你收集整理的C语言栈括号匹配算法的全部內容,希望文章能夠幫你解決所遇到的問題。

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