資料結構 堆疊

2021-10-01 11:24:31 字數 710 閱讀 7962

引入:多項式計算問題

例如:62/3-42*+

62/—6/2=3

33- —3-3=0

042* — 4*2=8(僅計算最近的兩個數)

08+ — 0+8=8 結束

需要某種方式:順序儲存,倒序輸出——堆疊

堆疊:具有操作約束性的線性表

入棧

void

push

( stack s, elementtype x )

else

}

出棧

elementtype pop

( stack s )

else

return

( s->data[

(s->top)--]);}

用乙個陣列實現兩個堆疊,要求最大利用空間

從兩頭開始儲存:

中綴表示式與字尾表示式的轉化:

左括號第一次出現優先順序最高

左括號一旦進入棧優先順序變為最低

遇到右括號將所有運算子彈出直至遇到左括號(將其彈出並丟棄)

資料結構 堆疊

對於棧,想必大家都十分熟悉了,也能很快的答出棧是乙個先進後出的佇列。但是在平常程式設計的生活中應用的十分少。在acm中,棧是一種十分重要的資料結構 其他領域也一樣 我們可以用這種資料結構解決一些十分棘手的問題,大大提高了程式的效率。有這樣一道名為software bugs 的題。題目的意思簡要來說就...

資料結構 堆疊

可以認為具有一定約束的線性表,其插入和刪除都作用於棧頂 top 的端點位置。且最 棧的資料最先彈出。壓入棧 push 插入資料 彈出棧 pop 取出 刪除 資料 型別名稱 堆疊 stack 資料物件集 乙個有0個或多個元素的有窮線性表 操作集 對於乙個具體的長度為正整數的maxsize的堆疊s st...

資料結構 堆疊

1 stack.h 2 ifndef stack h 3 define stack h45 struct nodestack 6 typedef struct nodestack ptrtonode 7typedef ptrtonode stack 8 typedef char elementtyp...