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