基於棧和佇列實現括號匹配演算法。
3、實現
陣列或列表實現棧和佇列
程式設計中的括號匹配、四則運算
互動式程式中生產消費佇列
定義棧的元素
建立棧的資訊:棧底、大小、棧頂標記
初始化棧的操作
銷毀棧的操作
入棧操作(包括溢位判斷,開闢新空間)
獲取棧頂指標操作(出棧)
獲取棧頂資訊操作(出棧)
棧為空判斷
問題:(1)棧什麼時候為空?標記法
a、棧底儲存特殊標記
b、記錄棧底的位置
(2)棧溢位怎麼辦?
a、開闢固定空間,設定乙個計數值,如果達到上限,就申請新空間。
b、鏈式的,入乙個就開闢乙個空間。(效率低)
更多的時候使用棧時是連續的空間,而不是鏈式。
場景分析:
typedef struct _member
node,*pnode;
typedef struct _stack_ds //記錄棧的資訊
stack_ds,*pstack_ds;
pstack_ds init_stack(int size)
void destroy_stack(pstack_ds head)
void push_stack(pstack_ds head,char ch,int line,int column)
head->ptr[head->memb].ch = ch;
head->ptr[head->memb].line = line;
head->ptr[head->memb].column = column;
head->memb++;}
pnode pop_stack(pstack_ds head)}
char fetch_top_memb(pstack_ds head)
/*判斷棧是否空*/
int empty_stack(pstack_ds head)
else
return 0;}
int main(int argc,char *argv)
file *fp = fopen(argv[1],"r");
if (fp == null)
fclose(fp);
}
棧和佇列 用棧實現括號匹配
一 棧匹配 思路 借助棧來實現括號的匹配,如果碰到的是三種左括號的話,將左括號進行入棧,以為需要匹配到括號肯定都是右括號於左括號進行匹配的,所以遇到左括號直接入棧就可以了。如果遇到右括號,需要進行匹配,如果目前棧中為空的話,直接返回false,因為這個括號很明顯的多出來了。如果不為空,將棧中的乙個元...
括號匹配問題 棧實現佇列
在對棧的學習時,見到了兩個棧的應用場景,乙個是括號匹配問題,乙個是用棧來實現佇列。括號匹配問題的解決 首先基於棧的基礎上,實現括號匹配問題,要使用到棧的基本操作,入棧,獲取棧頂元素,出棧等。首先,先將左括號入棧,然後進行括號匹配,如果匹配成功,則讓已經匹配成功的左括號出棧,繼續進行匹配,直到外部的括...
Problem C 括號匹配(棧和佇列)
time limit 1 sec memory limit 128 mb submit 76 solved 18 submit status web board 假設乙個表示式中只允許包含三種括號 圓括號 和 方括號 和 和花括號 且這三種括號可按任意的次序巢狀使用如 設計乙個演算法,判斷表示式中的...