括號匹配的練習時不時會在習題中遇到。為啥我沒有用堆疊,說白了是沒有把堆疊弄透徹,不太會用。去編寫這個題其實當時是覺得有點沒退路。
和公司某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 中有左括號 右括號和大小寫字母 規定 與常見的算數式子一樣 任何乙個左括號都從內到外與在它右邊且距離最近的 右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串,並在下一行標出不能...