資料結構 棧

2021-08-02 15:18:17 字數 1880 閱讀 3215

一、棧的資料型別

包括三個成員分別是:elemtype * base; size_t capacity; int top; 分別是指向棧首元素的base指標,以及容量capacity 、和棧頂位置top

二、棧的結構表示

三、棧有關的重要函式

1.棧的初始化函式

2.入棧、出棧

入棧:先進後出,首先棧要非滿,st->len < st->capacity,最後記得給top++

出棧:後進先出,首先棧要非空,只需把top—就行

3.獲取棧頂元素

獲取棧頂元素:函式返回乙個元素型別,先斷言非空,return st->base[st->top-1],注意這裡是top-1,而不是top--,我們只是獲取棧頂元素,並不是讓其出棧、

4.棧的判空

棧的判空:函式返回乙個bool型別,直接return st->top == 0,為0就是 0 == 0 為真,返回true 否者返回 false

四、棧的應用

1.將十進位制數,轉換成2進製數

a.借助棧,

思想是:讓2去除十進位制的數,每次餘數先進棧,然後結果就出棧。

棧要容得下,二進位制數,先進棧就迴圈,迴圈條件是value != 0 ,也就是while(value);每次把餘數進棧push(&st,value%2);再把value /= 2;value除2賦值給value;

要得到資料就出棧,利用迴圈,迴圈條件就是棧不空while(!empty),cout<

b.利用陣列(int型別的陣列)

思想:先申請一塊記憶體用於反著儲存資料,還是取模,然後正著輸出;

函式的返回值是乙個int的指標,申請陣列陣列大小是int*8(因為一位有8個位元組),然後i從後面起儲存mol ,int mol = value %2;arr[i] = mol; 

value /= 2; return 指標 注意,在函式內部使用的變數,要在函式外部使用,就需要用關鍵之static 將棧區的自動變數,變為全域性變數放在全域性資料去,供本檔案使用,直至本次程式結束。

c.利用字元陣列(char 型別的字元陣列)

申請的空間32+1+3 乙個int在32位就是32個字元+1個'\0'和' '空格,函式內部變數,在外部使用,使用static

2.十進位制轉換成十六進製制

必須用到字元char型別的陣列,或者指標

指標:字元陣列:

資料結構 棧 棧

可以把棧想像成乙個桶 進棧 就是把和桶口一樣大的燒餅往桶裡面扔 出棧 就是把燒餅拿出來 特點 先進後出。先扔進去的燒餅最後才能拿出來,最後扔進去的燒餅,第乙個拿出來 剛開始top 1 top 1 然後把進棧的元素賦值給data top 入棧操作 void push stack s,int x els...

資料結構 棧

例子 棧是一種被限制在只能在表的一端進行插入和刪除運算的線性表。區域性變數是用棧來儲存的 可以進行插入和刪除的一端稱為 棧頂 top 另一端稱為 棧底 bottom 當表中沒有元素時 表長為0的棧 稱為 空棧。棧的修改是按 後進先出的原則進行,因此棧被稱為後進先出 last in first out...

資料結構 棧

1.棧stack 是限定僅在表尾進行刪除和插入操作的線性表。允許插入刪除的一端叫做棧頂top,另外一端叫做棧底bottom。棧又稱為後進先出 lifo 的線性表。即表尾是指棧頂。2.順序棧 定義 top指向可存入元素的位置。typedef struct stacktypestacktype 插入 進...