判斷棧是否為空 棧與佇列簡介

2021-10-12 09:16:36 字數 1899 閱讀 7947

棧與佇列和陣列、鍊錶、樹這幾種資料結構不太一樣。棧與佇列主要是做為程式設計師的工具來使用,它們主要做為構思演算法的輔助工具,而不是完全的資料儲存工具。

它們的生命週期比陣列那些要短得多,在程式執行期間它們才會被建立,任務執行完就會被銷毀。

棧是一種只能在一端進行插入和刪除資料的資料結構,這一端被稱為棧頂(top)。其特點簡單來講就是先進後出。棧的主要機制可以用陣列來實現,當然也可以用鍊錶來實現。

用陣列實現棧,並完成常用操作——出棧、入棧、檢視元素(只能檢視棧頂元素)、判斷棧是否為空等操作。

public class stacktest     public stacktest(int maxsize)    /**     * 新增資料     * @param value     */    public void push(int value)    /**     * 移除資料     * @return     */    public long pop()     /**     * 檢視資料     * @return     */    public long peek()    public boolean isempty()    /***     * 判斷是否滿了     * @return     */    public boolean isfull()}
棧的所有操作複雜度都為o(1),棧的操作不依賴棧中元素大小,棧不需要移動和比較操作。

佇列的特點是先進先出。佇列也是用陣列來實現。

用陣列實現佇列,並完成常用操作——出隊、入隊、檢視元素、判斷佇列是否為空等操作。

public class queuetest     public queuetest(int maxsize)    /**     * 插入資料     * @param value     */    public void insert(long value)    /**     * 刪除資料     * @return     */    public long remove()    /**     * 檢視資料,從對頭檢視     * @return     */    public long peek()    /**     * 判斷是否為空     * @return     */    public boolean isempty()    public boolean isfull()}
佇列的插入、刪除等操作的複雜度都為o(1)。

優先順序佇列和普通佇列一樣,也是乙個隊頭,乙個隊尾,從隊頭移除元素,優先順序佇列中,資料項是有序的,這樣插入資料的時候就會根據某種規則去比較,然後插入到佇列合適的位置。因此,優先順序佇列插入的複雜度為o(n),刪除和檢視元素的複雜度為o(1)。

用陣列實現優先順序佇列,並完成常用操作——出隊、入隊、檢視元素、判斷佇列是否為空等操作。

public class firstqueuetest     public firstqueuetest(int maxsize)    /**     * 插入資料     * @param value     */    public void inser(long value)else{            // 按某種規則進行比較,這裡使用value的大小比較,按從小到大排序            for(int i = elements-1;i>=0;i--){                if(value
棧的特點是先進後出,棧只能檢視棧頂的乙個元素

佇列的特點是先進先出,只能檢視隊頭的乙個元素

優先順序佇列插入一條元素,平均需要移動2/n個元素,因此插入的複雜度為o(n)

棧和佇列,可以用陣列實現,也可以用其他資料結構實現

棧和佇列是為了完成某些工作,手動構造的資料結構

判斷棧是否為空 資料結構與演算法 棧

棧 stack 有些地方稱為堆疊,是一種容器,可存入資料元素 訪問元素 刪除元素,它的特點在於只能允許在容器的一端 稱為棧頂端指標,英語 top 進行加入資料 英語 push 和輸出資料 英語 pop 的運算。沒有了位置概念,保證任何時候可以訪問 刪除的元素都是此前最後存入的那個元素,確定了一種預設...

棧與佇列 判斷棧 隊列為空 滿

陣列棧 完成int isempty stack s 函式,該函式判斷棧是否已空,如果空返回1,否則返回0。完成int isfull stack s 函式,該函式判斷棧是否已滿,如果滿返回1,否則返回0。typedef int elemtype struct stackrecord typedef s...

棧與佇列簡介

棧與佇列和陣列 鍊錶 樹這幾種資料結構不太一樣。棧與佇列主要是做為程式設計師的工具來使用,它們主要做為構思演算法的輔助工具,而不是完全的資料儲存工具。它們的生命週期比陣列那些要短得多,在程式執行期間它們才會被建立,任務執行完就會被銷毀。棧是一種只能在一端進行插入和刪除資料的資料結構,這一端被稱為棧頂...