設計乙個演算法判定乙個算術表示式中的括號是否正確配對(包括三種括號並且需要考慮大中小三種括號的巢狀順序), 並將對應的程式除錯執行通過。
演算法思想:
暫不考慮資料元素的運算,只考慮括號的配對。則有兩個概念:對右括號期待的急迫程度和當前括號的優先順序。因此前者的特點符合棧的特點,即後遍歷到的括號,急迫程度越強。因此使用乙個棧來儲存遍歷到的括號,遇到左括號則入棧,遇到右括號,如果匹配當前左括號則出棧,如果不匹配則跳出報錯,如果出現了有右括號無左括號或遍歷完成不是空棧的情況,則跳出報錯。
第二個概念則使用乙個變數來表示優先順序,每做一次入棧或出棧的操作,則檢查一下當前棧頂元素的優先順序來確定當前括號的優先順序,如果入棧的左括號優先順序低於當前等級,則跳出報錯。
c語言**實現:
//使用棧實現括號的匹配
#include
#include
#include
//定義乙個棧
typedef
struct stackstack,*pstack;
void initstack(pstack x,int s)
int judgeempty(pstack x)
int judgefilled(pstack x)
int push(pstack x,char in)
int pop(pstack x)
int bracketmatch(char *x)
break;
case
']':
if(judgeempty(stack)==1||*(stack->top-1)!='[')
return
0; pop(stack);
switch(*stack->top-1)
break;
case
'}':
if(judgeempty(stack)==1||*(stack->top-1)!='
break;
default:
printf("o\n");
break;
}i++;
}if(judgeempty(stack)==0)
return
0; free(stack);
return1;}
int main()
括號匹配的檢驗(棧)
include using namespace std include include define ture 1 define false 0 define ok 1 define error 0 define overflow 2 typedef int status typedef char ...
棧的應用 括號匹配檢驗
輸入包含括號的表示式,包含3中括號 圓括號 方括號,大括號 其巢狀順序隨意,即 或 等均為正確的輸入格式,檢驗輸入表示式中的括號是否匹配。源 bracketmatch.h ifndef bracketmatch h define bracketmatch h define maxsize 100 t...
棧的運用(括號匹配檢驗)
8586 括號匹配檢驗 時間限制 1000ms 長度限制 10kb 提交次數 4447 通過次數 1864 題型 程式設計題 語言 g gcc description 利用棧編寫滿足下列要求的括號匹配檢驗程式 假設表示式中允許包含兩種括號 圓括號和方括號,其巢狀的順序隨意,即 或 等為正確的格式,或...