Aufgabe 2

Gegeben sei eine einfach verkettete Liste:

TYPE	Liste = POINTER TO ListElement;
	ListElement = RECORD
			  next: Liste;
			  content: CARDINAL
		      END;

Schreiben Sie eine Prozedur, die alle Elemente mit content = 0 verkettet; die gegebene Verkettung (Komponente next) soll dazu benutzt werden. Das letzte Element der Liste enthält in der Komponente next den Wert NIL.

PROCEDURE newList(VAR head: Liste);

Lösung

PROCEDURE newList(VAR head: Liste);
VAR p,q: Liste;
BEGIN
	p:= head;
	head := NIL;
	WHILE p <> NIL DO
		IF p^.content = 0 THEN
			q:=p;
			p:=p^.next;
			q^.next := head;
			head := q;
		ELSE
			p:=p^.next;
		END;
	END;
END newList;