棧的特性
使用場景
陣列模擬棧
鍊錶模擬棧
棧的資料結構:先進後出
、只能在棧頂進行新增(入棧)或刪除(出棧)
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.棧的構造 申請一定大小的空間...