Doubly-linked list/Definition: Difference between revisions
Content added Content deleted
Line 1,524: | Line 1,524: | ||
Group Head, Tail |
Group Head, Tail |
||
Module PushTail(k as pointer) { |
Module PushTail(k as pointer) { |
||
if .Tail is Null then { |
|||
.Head<=k |
|||
.Tail<=k |
|||
} else { |
|||
n=.Tail |
|||
.Tail<=k |
|||
k=>pred=n=>pred |
|||
n=>pred=k |
|||
k=>succ=n |
|||
⚫ | |||
} |
} |
||
} |
|||
Function RemoveTail { |
Function RemoveTail { |
||
n=.Tail |
|||
if n is .Head then { |
|||
.Head->Null |
|||
.Tail->Null |
|||
} Else { |
|||
.Tail<=n=>succ |
|||
.Tail=>pred=n=>pred |
|||
n=>pred->Null |
|||
} |
|||
for n { |
|||
.succ->Null |
|||
.pred->Null |
|||
⚫ | |||
⚫ | |||
} |
} |
||
⚫ | |||
⚫ | |||
Module PushHead(k as pointer) { |
Module PushHead(k as pointer) { |
||
if .head is Null then { |
if .head is Null then { |
||
Line 1,646: | Line 1,646: | ||
L.InsertAfter m1, newNode |
L.InsertAfter m1, newNode |
||
L.RemoveNode m1 |
L.RemoveNode m1 |
||
clear m1 ' last time |
clear m1 ' last time m1 used here |
||
newNode=Null |
newNode=Null |
||
Print "ok.............." |
Print "ok.............." |