File LISTE1.MI

Directory of image this file is from
This file as a plain text file

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<SUCHNAME) DO I:=LISTE[I].ZEIGER;
IF LISTE[I].NAME=SUCHNAME
THEN STELLE:=-1
ELSE STELLE:=I;
END;

PROCEDURE LOESCHEN(LOESCHNAME:ELEMENTTYP);
VAR I,J:INTEGER;
BEGIN
I:=LISTE[0].ZEIGER;
WHILE LISTE[I].NAME<LOESCHNAME DO
  BEGIN
  J:=I;I:=LISTE[I].ZEIGER
  END;
I:=LISTE[I].ZEIGER;LISTE[I].ZEIGER:=LEER;LISTE[J].ZEIGER:=I;
END;


BEGIN  (*===HAUPTPROGRAMM===*)
LISTE[0].ZEIGER:=-1; FOR I:=1 TO 20 DO LISTE[I].NAME:=LEER;
WRITELN("FOLGENDE BEFEHLE STEHEN ZUR VERFUEGUNG:");
WRITELN("FUER EINFUEGEN  E");
WRITELN("     AUSGABE    A");
WRITELN("     SUCHEN     S");
WRITELN("     LOESCHEN   L");
REPEAT
  WRITELN("GEBEN SIE EINEN BEFEHL EIN !");READLN;READ(ANTWORT);
  CASE ANTWORT OF
    "E":REPEAT
          WRITELN("WIE LAUTET DAS WORT ?");READLN;READ(WORT);
          EINFUEGEN(WORT);WRITELN("WEITER (J/N) ?");READLN;READ(ANTWORT)
        UNTIL ANTWORT<>"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.



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search