| 1234567891011121314151617181920212223242526272829303132333435 |
- MODULE PList;
- TYPE Node = RECORD val : INTEGER; next : POINTER TO Node END;
- TYPE PNode = POINTER TO Node;
- VAR head : PNode; ExitCode : INTEGER;
- PROCEDURE Append(v : INTEGER);
- VAR q, r : PNode;
- BEGIN
- NEW(q);
- q^.val := v;
- q^.next := NIL;
- IF head = NIL THEN
- head := q
- ELSE
- r := head;
- WHILE r^.next # NIL DO
- r := r^.next
- END;
- r^.next := q
- END
- END Append;
- PROCEDURE Sum(p : PNode) : INTEGER;
- BEGIN
- IF p = NIL THEN
- RETURN 0
- ELSE
- RETURN p^.val + Sum(p^.next)
- END
- END Sum;
- BEGIN
- head := NIL;
- Append(5);
- Append(7);
- Append(9);
- ExitCode := Sum(head)
- END PList.
|