基於棧和佇列實現括號匹配演算法

2021-06-28 18:44:32 字數 1168 閱讀 3843

基於棧和佇列實現括號匹配演算法。

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 假設乙個表示式中只允許包含三種括號 圓括號 和 方括號 和 和花括號 且這三種括號可按任意的次序巢狀使用如 設計乙個演算法,判斷表示式中的...