不用堆疊實現的括號匹配

2021-06-23 08:54:27 字數 1671 閱讀 3999

括號匹配的練習時不時會在習題中遇到。為啥我沒有用堆疊,說白了是沒有把堆疊弄透徹,不太會用。去編寫這個題其實當時是覺得有點沒退路。

和公司某developer吹牛,說自己在學習c語言,經常做習題,然後把當時眼前看到的括號匹配問題發給了他,還在那裡吹思路。對方一句用堆疊啊,我有點懵。於是很莽撞地回說可以不用的。接下來的問題嘛,就不需要多費唇舌了。code拿出來就知有沒有。

為了證明自己還是有半把刷子的,當天我就開始編寫。而一直到隔天的晚上才完成了以下這個簡陋的程式。過程中被那位大哥測試出了很多bug。現在想想都覺得不好意思。

#include #define max 1000

char input[max];

int pair (char array, int max);

int main()

int pair (char array, int max)

else

continue; }}

else if ( array[i] == ')') // since the above loop will replace the first ')' it meets and breaks, we should not encounter')' here;

else

continue;

} printf("brace = %d\n", brace); //test the brace value;

if (brace != 0 ) //if braces are in pairs, the integer brace should be 0 in the end;

flag = 1;

return flag;

}

後來去看了堆疊思路的編寫,才知道啥是強大。沒見過世面就是這樣。附上別人的堆疊**。

#include#include#include#define stack_init_size 10

#define stack_grow_size 5

#define elemtype char

#define ok 1

#define error 0

typedef struct stack;

int initstack(stack *s)

int stackempty(stack *s)

int push(stack *s,char e)

*s->top++=e;

return ok;

}int pop(stack *s, char *e)

int comp(char a,char b) '))

else

return ok;

}int count(stack *s) ':

if (stackempty(s))

else

pop(s,&e1);

if (!comp(e1,e[i])) }}

if (!stackempty(s))

else

}int main()

它是幫助我理解堆疊原理入門的**。特此記錄。

DS堆疊 括號匹配

問題 c ds堆疊 括號匹配 時間限制 1 sec 記憶體限制 128 mb 提交 396 解決 343 提交 狀態 討論版 題目描述 處理表示式過程中需要對括號匹配進行檢驗,括號匹配包括三種 和 和 例如表示式中包含括號如下 1234 5678 9101112 從上例可以看出第1和第2個括號匹配,...

判斷括號是否匹配 堆疊

1.有效的括號 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示...

堆疊入門 括號匹配問題

堆疊入門 括號匹配問題 時間限制 1 秒 記憶體限制 32 兆 題目描述 在某個字串 長度不超過 100 中有左括號 右括號和大小寫字母 規定 與常見的算數式子一樣 任何乙個左括號都從內到外與在它右邊且距離最近的 右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串,並在下一行標出不能...