回覆列表
-
1 # 我是阿嘛
-
2 # 我是阿嘛
如果只有圓括號(沒有[ ] 或 { }),不需要構造一個棧。因為用棧實現時,棧裡裝的都是一模一樣的左括號 "(" ,因此我們只需定義一個 整型變數 來記錄 棧中元素的個數 即可。具體程式碼如下:
#include
int main (void)
{
char input = 0;
int num = 0; /* 不用棧,只記錄棧中元素的個數,初始化為0 */
while (1 == scanf ("%c", &input)) /* 讀入字串,每次讀一個字元存入 input 中 */
{
if ("(" == input)
{
++num; /* 相當於把左括號壓棧 */
}
if (")" == input)
{
--num; /* 相當於遇到右括號時彈棧 */
}
if (0 > num)
{
printf ("括號不匹配\n");
return 0;
}
}
if (0 == num) /* 讀完字串後判斷“棧”是否為空 */
{
printf ("括號匹配\n");
}
else
{
printf ("括號不匹配\n");
}
return 0;
}
如果只有圓括號(沒有[ ] 或 { }),不需要構造一個棧。因為用棧實現時,棧裡裝的都是一模一樣的左括號 "(" ,因此我們只需定義一個 整型變數 來記錄 棧中元素的個數 即可。具體程式碼如下:
#include
int main (void)
{
char input = 0;
int num = 0; /* 不用棧,只記錄棧中元素的個數,初始化為0 */
while (1 == scanf ("%c", &input)) /* 讀入字串,每次讀一個字元存入 input 中 */
{
if ("(" == input)
{
++num; /* 相當於把左括號壓棧 */
}
if (")" == input)
{
--num; /* 相當於遇到右括號時彈棧 */
}
if (0 > num)
{
printf ("括號不匹配\n");
return 0;
}
}
if (0 == num) /* 讀完字串後判斷“棧”是否為空 */
{
printf ("括號匹配\n");
}
else
{
printf ("括號不匹配\n");
}
return 0;
}