#define _crt_secure_no_warnings 1
#include
#include
#include
typedef char datatype;
#define _capacity 100// 底層空間的總大小
typedef struct stack
stack;
//初始化
void stackinit(stack* s)
// 入棧
void stackpush(stack* s, datatype data)
s->_array[s->_top++] = data;
}// 出棧
void stackpop(stack* s)
s->_top--;
}// 獲取棧頂元素
datatype stacktop(stack* s)
datatype x = s->_array[s->_top-1];
return x;
}// 有效元素的個數
int stacksize(stack* s)
// 檢測棧是否為空
int stackempty(stack* s)
//列印
void printstack(stack * s)
while (s->_top)
}// 棧的應用
//2. 用棧解決括號匹配問題,測試用例見課件、
int lookupbracket(stack *s, char *str)
while (*str != '\0')
case '
case '[':
case ')':
break;
}case '}':
break;
}case ']':
break;}}
str++;
}return s->_top;
}//3. 用棧求解字尾表示式值
int suffix_expression(stack *s, char *str)
else if (c == '+')
else if (c == '-')
else if (c == '*')
else if (c == '/')
str++;
}return stacktop(s);
}int main()
棧解決括號匹配問題
題目 假設乙個表示式中可以包含三種括號 小括號,中括號,大括號,且這三種括號可以任意次序巢狀使用,如 3 5 4 編寫判斷表示式括號是否匹配的程式。表示式為字串。解題思路 解決括號匹配問題我們要考慮的是優先順序,大家學過數學的都知道要想解決這類算式我們要做的就是去括號,去括號不能隨便去,要先去除最後...
括號匹配問題 棧
根據棧的先進後出特點 將遇到的左括號依次壓入棧中 遇到右括號時取出棧頂元素 退棧處理 比較棧頂元素和輸入的括號是否想匹配 注意 1.判斷的字串流的奇偶性 2.注意輸入的字元是否為所需的括號字元 3.考慮棧的棧頂和棧底是否溢位 4.棧在開始和結束時都應該是空的.所以匹配到最後還要判斷棧是否為空,若非空...
用棧寫括號匹配
include include 要包含這個標頭檔案 include 要包含這個標頭檔案 define error 0 define ok 1 define ture 1 define false 0 define overflow 1 define init stack size 10 define...