1:procedure MakeHeap()
2:Let L be an empty doubly linked list with a sentinel node, i.e. L.nil.prev=L.nil.next=L.nil
3:return L
4:end procedure
5:
6:procedure Insert(L,x)
7:x.prev=L.nil
8:x.next=L.nil.next
9:L.nil.next.prev=x
10:L.nil.next=x
11:end procedure
12:
13:procedure Minimum(L)
14:if L.nil.next=L.nil then
15:return L.nil
16:end if
17:x=L.nil.next
18:p=x
19:while p=L.nil do
20:if p.key<x.key then
22:end if
23:p=p.next
24:end while
25:return x
26:end procedure
27:
28:procedure ExtractMin(L)
29:x= Minimum(L)
30:if x=L.nil then
31:x.prev.next=x.next
32:x.next.prev=x.prev
33:end if
34:return x
35:end procedure
36:
37:procedure Union(L1,L2)
38:L1.nil.prev.next=L2.nil.next
39:L2.nil.next.prev=L1.nil.prev
40:L2.nil.prev.next=L1.nil
41:L1.nil.prev=L2.nil.prev
42:return L1
43:end procedure