PROGRAM GEKETTETELISTE (IN,OUT); CONST MAX=20; LEER=-999; TYPE ELEMENTTYP=INTEGER; KNOTENTYP=RECORD NAME:ELEMENTTYP; ZEIGER:INTEGER; END; VAR LISTE:ARRAY[0..MAX] OF KNOTENTYP; WORT:ELEMENTTYP; ANTWORT:CHAR; I,INDEX:INTEGER; PROCEDURE EINFUEGEN(NEUNAME:ELEMENTTYP); VAR H,I,J,HILF:INTEGER; BEGIN I:=0; REPEAT I:=I+1; UNTIL LISTE[I].NAME=LEER;LISTE[I].NAME:=NEUNAME; J:=LISTE[0].ZEIGER; H:=0; IF J=-1 THEN J:=1; WHILE (J<>-1)AND(LISTE[I].NAME<=LISTE[J].NAME) DO BEGIN H:=J; J:=LISTE[J].ZEIGER; END; HILF:=LISTE[H].ZEIGER;LISTE[H].ZEIGER:=I;LISTE[I].ZEIGER:=HILF; END; PROCEDURE AUSGABE; VAR I,J:INTEGER; BEGIN I:=0; IF LISTE[0].ZEIGER=-1 THEN WRITELN("DIE LISTE IST LEER") ELSE J:=LISTE[0].ZEIGER; REPEAT I:=I+1; WRITELN(I:3, LISTE[J].NAME); J:=LISTE[J].ZEIGER UNTIL J=-1 END; PROCEDURE SUCHEN(SUCHNAME:ELEMENTTYP;STELLE:INTEGER); VAR I:INTEGER; BEGIN I:=LISTE[0].ZEIGER; WHILE (I<>-1) AND ( LISTE[I].NAME"J"; "A":AUSGABE; "S":BEGIN WRITELN("WIE LAUTET DER GESUCHTE NAME ?");READLN;READ(WORT); SUCHEN(WORT,INDEX); IF INDEX=-1 THEN WRITELN("DER NAME STEHT NICHT IN DER LISTE.") ELSE WRITELN("DER NAME ",WORT," HAT DEN INDEX ",INDEX:3); END; "L":BEGIN WRITELN("WELCHER NAME SOLL GELOESCHT WERDEN ?"); READLN;READ(WORT); LOESCHEN(WORT); END; END; WRITELN("NEUEN BEFEHL EINGEBEN (J/N) ?"); READLN;READ(ANTWORT) UNTIL ANTWORT<>"J" END.