資料結構 之堆疊與用棧實現十進位製到二進位制的轉換

2021-10-03 20:45:51 字數 2466 閱讀 3344

#include

#include

using

namespace std;

intconvert

(int n)

//彈出相應的元素

while

(!res.

empty()

)}intmain

(void

)

中綴表示式:運算符號位於兩個運算數之間。如,a + b * c - d / e

字尾表示式:運算符號位於兩個運算數之後。如,a b c *+d e /-

當遇到運算子時把最近的兩個運算數放進去運算

n個資料元素依次入棧,出棧順序:c(2n,n)-c(2n,n+1)

n個字元入棧全排列有n!種排列方式

操作:1:(1)生成空堆疊

stack createstack

(int maxsize)

2:(2)入棧

bool isfull

( stack s )

bool push

( stack s, elementtype x )

else

}

3:(3)出棧

bool isempty

( stack s )

elementtype pop

( stack s )

else

return

( s->data[

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

請用乙個陣列實現兩個堆疊,要求最大地利用陣列空間,使陣列只要有空間入棧操作就可以成功。寫出相應的入棧和出棧操作函式。

【分析】 一種比較聰明的方法是使這兩個棧分別從陣列的兩頭開始向中間生長;當兩個棧的棧頂指標相遇時,表示兩個棧都滿了。此時,最大化地利用了陣列空間

(1) 堆疊初始化(建立空棧)

(2) 判斷堆疊s是否為空

stack createstack()

bool isempty ( stack s )

bool push

( stack s, elementtype x )

elementtype pop

( stack s )

else

}

資料結構之 棧 十進位制轉d進製(堆疊陣列模擬)

其實這篇文章開出來主要是水文章 棧 後進先出的婊 特點 只能在某一端插入和刪除的特殊的線性表 操作 進棧 push 向棧頂插入元素 出棧 pop 將棧頂元素刪除 實現 定義乙個長為n的陣列,用乙個top 相當於指標 指向棧頂,若top 0,則表示棧空 top n,則表示棧滿。進棧時top 1,出棧時...

資料結構之棧 十進位制轉其他進製 棧基本操作

最近新學習到了棧,對於棧的理解比較淺顯,這裡說一下棧的基本操作,用了進製轉換的例子 以十進位制為例子,例如 1348 10 2504 8 運算過程 n ndiv 8nmod 8 1348 168 4 168 21 0 21 2 5 2 0 2 下面是 部分 1.定義棧 typedef struct ...

資料結構示例之十進位制轉換其他進製

以下為 十進位制數轉換為其他進製數 的示例 1.用c語言實現的版本 include include define stacksize 100 假定預分配的棧空間最多為100個元素 typedef int datatype 假定棧元素的資料型別為整型 typedef structseqstack 初始...