Aufgabe 5

Gegeben sei folgendes Programm:

MODULE a5;
FROM InOut IMPORT WriteCard, WriteLn;
FROM Storage IMPORT ALLOCATE;

TYPE	Liste = POINTER TO ListElement;
	ListElement = RECORD
			next: Liste;
			content: CARDINAL
		      END;
VAR	liste,p: Liste;

CONST	anz = 10;

PROCEDURE buildList(VAR head: Liste);
VAR i: CARDINAL;
    p: Liste;
BEGIN
	head := NIL;
	FOR i:=1 TO anz DO
		NEW(p);
		p^.content := i;
		p^.next := head;
		head := p
	END
END buildList;
 
PROCEDURE printList(p:Liste);
BEGIN
	WHILE p <> NIL DO
		WriteCard(p^.content,6);
		p := p^.next;
	END;
	WriteLn;
END printList;

PROCEDURE whatever(VAR p: Liste; x: CARDINAL):Liste;
	VAR q: Liste;
BEGIN
	IF p=NIL THEN 
		RETURN NIL
	ELSE
		IF p^.content = x THEN
			q:=p;
			p:=p^.next;
			RETURN q
		ELSE
			RETURN whatever(p^.next,x)
		END
	END
END whatever;

BEGIN
	buildList(liste);
	printList(liste);
	p := whatever(liste,5);
	WriteCard(p^.content,6); WriteLn;
	printList(liste);
END a5.
Geben Sie an, was dieses Programm ausgibt!

Lösung

    10     9     8     7     6     5     4     3     2     1
     5
    10     9     8     7     6     4     3     2     1