RosettaCodeData/Task/Doubly-linked-list-Traversal/BBC-BASIC/doubly-linked-list-traversal.basic
2023-07-01 13:44:08 -04:00

37 lines
817 B
Text

DIM node{pPrev%, pNext%, iData%}
DIM a{} = node{}, b{} = node{}, c{} = node{}
a.pNext% = b{}
a.iData% = 123
b.pPrev% = a{}
b.iData% = 789
c.iData% = 456
PROCinsert(a{}, c{})
PRINT "Traverse forwards:"
pnode% = a{}
REPEAT
!(^node{}+4) = pnode%
PRINT node.iData%
pnode% = node.pNext%
UNTIL pnode% = 0
PRINT "Traverse backwards:"
pnode% = b{}
REPEAT
!(^node{}+4) = pnode%
PRINT node.iData%
pnode% = node.pPrev%
UNTIL pnode% = 0
END
DEF PROCinsert(here{}, new{})
LOCAL temp{} : DIM temp{} = node{}
new.pNext% = here.pNext%
new.pPrev% = here{}
!(^temp{}+4) = new.pNext%
temp.pPrev% = new{}
here.pNext% = new{}
ENDPROC