用棧解決括號匹配問題

2021-08-19 01:59:50 字數 1221 閱讀 7416

#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...