《資料結構與演算法》之佇列(基於鍊錶構造)

2021-08-31 18:18:14 字數 1360 閱讀 7743

在佇列的形成過程中,可以利用線性鍊錶的原理,來生成乙個佇列。新元素(等待進入佇列的元素)總是被插入到鍊錶的尾部,而讀取的時候總是從鍊錶的頭部開始讀取。每次讀取乙個元素,釋放乙個元素,即所謂的動態建立,動態釋放。因而不存在溢位等問題。由於鍊錶由節點連線而成,遍歷也方便。

public class queue3 

// 判斷佇列是否為空

public boolean isempty() else

} // 獲取佇列的長度

public int length()

// 入隊(即隊尾插入新資料)

public void add(object newdata)

//出隊(即從隊頭輸出並刪除資料)

public object pop()

}

鍊錶程式:

public class doublelinkedlist 

} public doublelinkedlist()

// 在煉表頭增加節點

public void addhead(object value) else

} // 在鍊錶尾增加節點

public void addtail(object value) else

} // 刪除煉表頭

public object deletehead()

return temp.data;

} // 刪除鍊錶尾

public object deletetail()

return temp.data;

} // 獲得鍊錶的節點個數

public int getsize()

// 判斷鍊錶是否為空

public boolean isempty()

// 從頭開始顯示節點資訊

public void headdisplay()

while (tempsize > 0) else if (node.next == null) else

node = node.next;

tempsize--;

}system.out.println();

} else }

// 從尾開始顯示節點資訊

public void taildisplay()

while (tempsize > 0) else if (node.previous == null) else

node = node.previous;

tempsize--;

}system.out.println();

} else }

}

資料結構與演算法之陣列 鍊錶 佇列 棧

一 陣列 陣列是乙個儲存元素的線性集合,它使用一塊連續的記憶體空間儲存資料,儲存的資料的個數在分配記憶體的時候就是確定的。訪問陣列中第 n 個元素的時間花費是o 1 在陣列中查詢乙個指定的元素則是o n 向陣列中插入或刪除元素時,最好的情況是在陣列的末尾進行操作,時間複雜度是o 1 最壞情況是插入或...

資料結構與演算法(鍊錶 棧 佇列)

資料結構與演算法 演算法的5個基本特性 輸入 輸出 有窮性 確定性和可行性 演算法的時間複雜度 t o f n 空間複雜度 s n o f n 儲存空間的實現 線性表 list 零個或多個資料元素的有限序列 順序儲存結構 連續的儲存單元 define maxsize 20 typedef int e...

資料結構與演算法之鍊錶

鍊錶的分類 1 單鏈表 頭插法 只需要維護乙個頭結點即可,常用來模擬堆疊 尾插法 需要維護頭結點和尾結點,常用來模擬佇列。2 雙向鍊錶 雙向遍歷,可以用來儲存網頁的歷史記錄等 3 迴圈鍊錶 經常出現在面試題中,判斷鍊錶是否有環。鍊錶的刪除 方式一 維護兩個指標,current 表示當前節點 和pre...