用棧實現括號匹配的演算法

2021-07-24 04:51:23 字數 1045 閱讀 2463

要求:

用棧的基本操作實現括號匹配演算法,要求至少包括兩種型別的括號。

下面的**是我的一些思路,並不算最優的,大家學習就好啦

#include#include#define max 5			//初始建立棧的容量

#define add 5 //棧滿時新增的容量

typedef char elemtype;

typedef struct

sqstack;

initstack(sqstack *s) //建立乙個容量為 max 的空棧

s->top = s->base;

s->max = max;

}push(sqstack *s, elemtype e) //進棧

*(s->top) = e;

s->top++;

}pop(sqstack *s, elemtype *e) //出棧

}int stacklen(sqstack s) //計算棧的容量

int main()

」\n");

while ((q = getchar()) != '#')

else if ((q == ')') && (--(p).top == '('))

else if ('

else if ((q == '}') && (--(p).top == '

else if ('[' == q)

else if ((q == ']') && (--(p).top == '['))

else if ('<' == q)

else if ((q == '>') && (--(p).top == '<'))

}count = stacklen(p); //迴圈結束後再判斷棧是否還有元素

if (!count) //flag為0時代表已經全部匹配出棧

printf("yes\n");

else

printf("no\n");

return 0;

}

注:**僅供學習使用

用棧實現括號匹配

假設只允許出現兩種括號 圓括號和方括號,其巢狀順序隨意,即不管 或 等都為正確匹配,但是形如 就成為錯誤的匹配。可以用 期待的緊急程度 的概念來描述 如 共8個括號,從左往右依次標代號為1 8,即第乙個 代號為1,第二個 代號為2,第三個 代號為3,依次類推 當計算機收到了第乙個括號後,期待它與第八...

用棧實現括號匹配

構造棧函式並用棧實現括號匹配 以下 include include include 建立乙個棧,用棧求出二進位制轉十進位制,轉八進位制,銷毀,清空,push,pop 用棧來求逆波蘭演算法 用字元來轉成雙精度變數 用棧來檢驗括號是否正確 建立乙個鍊錶棧,並具有插入,刪除操作 define initnu...

用棧實現括號匹配 python

python資料結構與演算法分析 第二版 用python實現棧,檔名為pystack.py user bin env python coding utf 8 假設列表尾部是棧頂端o 1 class stack def init self self.items defisempty self 判棧空 ...