| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- Listing:
- 1 MODULE PList;
- 2 TYPE Node = RECORD val : INTEGER; next : POINTER TO Node END;
- 3 TYPE PNode = POINTER TO Node;
- 4 VAR head : PNode; ExitCode : INTEGER;
- 5 PROCEDURE Append(v : INTEGER);
- 6 VAR q, r : PNode;
- 7 BEGIN
- 8 NEW(q);
- 9 q^.val := v;
- 10 q^.next := NIL;
- 11 IF head = NIL THEN
- 12 head := q
- 13 ELSE
- 14 r := head;
- 15 WHILE r^.next # NIL DO
- 16 r := r^.next
- 17 END;
- 18 r^.next := q
- 19 END
- 20 END Append;
- 21 PROCEDURE Sum(p : PNode) : INTEGER;
- 22 BEGIN
- 23 IF p = NIL THEN
- 24 RETURN 0
- 25 ELSE
- 26 RETURN p^.val + Sum(p^.next)
- 27 END
- 28 END Sum;
- 29 BEGIN
- 30 head := NIL;
- 31 Append(5);
- 32 Append(7);
- 33 Append(9);
- 34 ExitCode := Sum(head)
- 35 END PList.
- 0 errors
|