資料結構速學筆記 棧

2021-10-06 23:40:49 字數 2536 閱讀 1026

棧的特性

使用場景

陣列模擬棧

鍊錶模擬棧

棧的資料結構:先進後出只能在棧頂進行新增(入棧)或刪除(出棧)

android的activity棧

鍊錶節點的反向列印,可以結合棧列印出來

鍊錶遍歷時,把節點資料壓入棧,把棧列印出來就是對應鍊錶的反向列印

思路:

定義乙個int型別的指標表示棧頂: top

每次新增(入棧)資料,top++

每次刪除(出棧)資料,top–

**實現

/**

* created by joker on 2020-06-08

* describe: 陣列模擬stack

* 思路:陣列模擬

* 1. 定義乙個int型別的指標表示棧頂: top

* 2. 每次新增(入棧)資料,top++

* 3. 每次刪除(出棧)資料,top--

*/public

class

arraystack

arraystack.

print()

;}/** * 表示棧頂下表

*/private

int top =-1

;/**

* 棧的最大長度

* 棧滿時,棧頂的最大資料的下標 top = stackszie-1

*/private

int stackszie;

/** * 陣列儲存

*/private

int[

] stack;

/** * 棧滿

*/private

boolean

isstackfull()

/** * 棧空

*/private

boolean

isstackempty()

public

arraystack

(int stackszie)

/** * 存

*/public

void

push

(int pushdata)

}/**

* 取*/

public

intpop()

else

}public

void

print()

}public

static

void

log(object obj)

}

思路入棧時利用鍊錶的頭插法

出棧時,取出煉表頭節點後的第乙個節點,讓頭節點的next直接指向,當前要出棧的節點資料next指向的資料

解釋

例如:head.next -> a.next ->b.next

刪除a節點後 :head.next -> b.next

**實現:

/**

* created by joker on 2020-06-08

* describe: 鍊錶模擬stack

* 思路:

* 1. 入棧時利用鍊錶的頭插法

* 2. 出棧時,取出煉表頭節點後的第乙個節點,讓頭節點的next直接指向,當前要出棧的節點資料next指向的資料

* 解釋:-> 例如:head.next -> a.next ->b.next

* 刪除a節點後 : head.next -> b.next

*/public

class

linkliststack

private stacknode firstnode =

newstacknode(-

1);/**

* 鍊錶模擬棧

* 保持乙個原則:頭插法

* 每次push資料,都插在鍊錶head節點後的第乙個節點

*/public

void

pushnode

(stacknode addnode)

else

}public stacknode popnode()

else

return returnnode;

}private

void

print()

}static

class

stacknode

@override

public string tostring()

';}}

public

static

void

log(object obj)

}

資料結構筆記 棧

一 棧的邏輯結構 棧 限定僅在表尾進行插入和刪除操作的線性表。空棧 不含任何資料元素的棧。允許插入和刪除的一端稱為 棧頂,另一端稱為 棧底。示意圖 二 順序棧的儲存結構及實現 其中top為順序棧棧頂指標。進棧操作 top 出棧操作 top 判斷棧空 top 1 棧滿 top maxsize 1 co...

資料結構筆記 棧

作用s.empty 如果棧為空則返回true,否則返回false s.size 返回棧中元素的個數 s.top 返回棧頂元素,但不刪除該元素 s.pop 彈出棧頂元素,但不返回其值 s.push 將元素壓入棧頂 include include 棧需要新增標頭檔案 using namespace st...

資料結構筆記 棧

1.棧的構造 申請給定大小空間,將棧頂指標指向棧底。2.棧的初始化 將棧的棧頂指標指向棧底。3.棧的插入 先檢查是否棧滿,若棧滿,則報錯。否則將棧頂指標上移乙個單位,將元素插入棧頂。4。棧的刪除 先檢查是否棧空。若棧空,則報錯。否則,刪去棧頂元素,將棧頂下移乙個單位。1.棧的構造 申請一定大小的空間...