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 {
if .Tail is Null then {
.Head<=k
.Head<=k
.Tail<=k
.Tail<=k
} else {
} else {
n=.Tail
n=.Tail
.Tail<=k
.Tail<=k
k=>pred=n=>pred
k=>pred=n=>pred
n=>pred=k
n=>pred=k
k=>succ=n
k=>succ=n
}
}
}
}
Function RemoveTail {
Function RemoveTail {
n=.Tail
n=.Tail
if n is .Head then {
if n is .Head then {
.Head->Null
.Head->Null
.Tail->Null
.Tail->Null
} Else {
} Else {
.Tail<=n=>succ
.Tail<=n=>succ
.Tail=>pred=n=>pred
.Tail=>pred=n=>pred
n=>pred->Null
n=>pred->Null
}
}
for n {
for n {
.succ->Null
.succ->Null
.pred->Null
.pred->Null
}
=n
}
}
=n
}
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 m used here
clear m1 ' last time m1 used here
newNode=Null
newNode=Null
Print "ok.............."
Print "ok.............."