普林斯頓公開課 演算法2 7 棧

2021-06-22 08:06:21 字數 1297 閱讀 6897

棧和佇列都是乙個元素的集合,都能提供增加、刪除、迭代、判斷是否為空4個操作。

在棧中,刪除操作刪除的是最後新增的元素。

在佇列中,刪除操作刪除的是最早新增的元素。

push()

pop()

isempty()

將乙個鍊錶中第乙個節點刪掉,並將第二個節點設為首節點。

將新的節點加入到鍊錶的頭部。

在最壞情況下,每個操作的複雜度都是1。

棧中的每個元素都使用大約40個位元組。

publicclasslinkedstack

privatenode first;

publiclinkedstack()

publicvoidpush(t value)

publict pop()

publicbooleanisempty()

}

棧也可以使用陣列來實現,但缺點是超過容量n時就會溢位。

下溢:當彈出空的棧時丟擲異常

溢位:當超過容量時,要調整陣列的大小

允許新增null值

引用乙個不再使用的物件,這樣會造成記憶體無法釋放,造成記憶體浪費。

publicclassarraystack

publicvoidpush(t t)

publict pop()

publicbooleanisempty()

}

普林斯頓大學演算法公開課筆記 插入排序

演算法 排序,algorithms part1插入排序 插入排序 insertion sort 的基本思想是 每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。極客學院 演算法描述 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在...

普林斯頓大學演算法公開課筆記 插入排序

演算法 排序,algorithms part1插入排序 插入排序 insertion sort 的基本思想是 每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。極客學院 演算法描述 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在...

普林斯頓公開課 演算法1 9 並查集 快速合併

本節講的是並查集的另外一種實現方法。這種方法的合併操作開銷很小,但是查詢操作開銷很大。這種演算法的資料結構和快速查詢方法的資料結構是一樣的,也是n個整數組成的陣列。陣列中每個元素id i 的含義是指i的上級是id i 乙個節點的根節點就是id id id id i 一直迴圈直到數值不再變化為止。由於...