棧(Stack)原理及實現

2021-10-07 03:39:11 字數 1926 閱讀 9628

目錄

棧概述順序結構實現

鍊錶結構實現

歸納起來:棧就是一種後進先出(lifo)的線性表。

棧常用操作:

順序儲存結構的棧簡稱為順序棧,它利用一組位址連續的儲存單元依次存放從棧底到棧頂的資料元素。

棧底位置固定不變,它的棧頂元素可以直接通過順序棧底層陣列的陣列元素arr[size-1]來訪問。

/*** 以指定長度的陣列量建立棧

* @param element 第乙個棧元素

* @param initsize 初始化長度

*/public sequencestack(t element, int initsize)

/*** 以指定長度的陣列量建立棧

* @param element 第乙個棧元素

* @param initsize 初始化長度

* @param capacityincrement 陣列增長的單位長度

*/public sequencestack(t element, int initsize, int capacityincrement)

//棧大小

public int length()

//入棧

public void push(t element)

//判斷當前棧空間是不是夠用,不夠的話以2倍擴容

private void ensurecapacity(int mincapacity)

} else

}elementdata = arrays.copyof(elementdata, capacity);}}

//出棧

public t pop()

//返回棧頂元素,但不刪除

public t peek()

//判斷是否為空

public boolean empty()

//清空

public void clear()

}也可採用單鏈表來儲存棧中所有元素,這種鏈式結構的棧也被稱為鏈棧。

對於鏈棧而言,棧頂元素不斷地改變,程式只要使用乙個top引用來記錄當前的棧頂元素即可。

top引用變數永遠引用棧頂元素,再使用乙個size變數記錄當前棧中包含多少元素即可。

}//棧頂元素

private node top;

//鏈棧包含的節點數

private int size;

public linkstack()

public linkstack(t element)

public int length()

//入棧

public void push(t element)

//出棧

public t pop()

//返回棧頂元素

public t peek()

//判斷是否為空

public boolean empty()

//清空

public void clear()

}

棧原理及實現

棧原理及實現 棧的定義 棧 stack 是限制僅在表的一端進行插入和刪除運算的線性表。1 通常稱插入 刪除的這一端為棧頂 top 另一端稱為棧底 bottom 2 當表中沒有元素時稱為空棧。3 棧為後進先出 last in first out 的線性表,簡稱為 lifo 表。棧的修改是按後進先出的原...

棧(Stack)的Python實現

棧就是只能在一端插入和刪除資料的鍊錶,這個端就叫做棧頂 top 最後乙個新增的資料第乙個被刪除。因此,這也叫後進先出 last in first out 鍊錶或是先進後出鍊錶 first in last out 舉個例子,餐廳的盤子堆,盤子洗完要堆到上面,而不是插到下面的某個位置 相信不會有人那麼做...

Python實現的棧(stack)

class stack def init self self.stack 推入元素到棧的頂端 defpush self,item 從棧的頂端拿走元素 defpop self self.stack.pop 檢查是否為空 defis empty self return len self.stack 0 ...