RosettaCodeData/Task/Doubly-linked-list-Element-insertion/XPL0/doubly-linked-list-element-insertion.xpl0
2023-07-01 13:44:08 -04:00

25 lines
516 B
Text

def \Node\ Prev, Data, Next; \Element (Node) definition
proc Insert(NewNode, Node); \Insert NewNode after Node
int NewNode, Node, NextNode;
[NextNode:= Node(Next);
NextNode(Prev):= NewNode;
NewNode(Next):= NextNode;
NewNode(Prev):= Node;
Node(Next):= NewNode;
];
int Node, A(3), B(3), C(3);
[A(Next):= B;
A(Data):= ^a;
B(Prev):= A;
B(Data):= ^b;
B(Next):= 0;
C(Data):= ^c;
Insert(C, A);
Node:= A;
while Node # 0 do
[ChOut(0, Node(Data));
Node:= Node(Next);
];
]