1 M=29:REM LISTE FUER 197 EINTRAEGE 2 GOSUB 10 3 GOTO 300 10 REM - HASHFUNKTION DEFINIEREN - 11 REM - UND TABELLE INITIALISIEREN - 12 DEF FN MODM(N)=N-INT(N/M)*M 13 DEF FN H(K)=FN MODM(FN MODM(K)+I) 14 DIM T(M): REM ARRAYS 15 DIM A$(M):REM DIMENSIONIEREN 16 FOR J=0 TO M:T(J)=-1:NEXT:REM LOESCHEN 17 RETURN 30 REM ---- HASH INSERT ---- 40 I=0 50 J=FN H(K) 60 IF T(J)<0 THEN T(J)=K:RETURN 70 I=I+1:IF I < M GOTO 50 80 PRINT "?HASH TABLE OVERFLOW ERROR":STOP 90 J=-1:RETURN 100 REM ---- HASH SEARCH ---- 110 I=0 120 J=FN H(K) 130 IF T(J)=K THEN RETURN 140 I=I+1 150 IF (T(J)=-1) OR (I=M) THEN J=-1:RETURN 160 GOTO 120 170 REM ---- HASH DELETE ---- 180 GOSUB 110:IF J=-1 THEN RETURN 190 T(J)=-2:RETURN 300 PRINT "[147]1.NEUER EINTRAG" 310 PRINT "2.SUCHEN" 320 PRINT "3.LOESCHEN" 330 GET X$:IF X$="" THEN GOTO 330 340 IF X$="1" THEN GOSUB 1000 350 IF X$="2" THEN GOSUB 2000 360 IF X$="3" THEN GOSUB 3000 370 GOTO 300 1000 INPUT "NAME";N$ 1010 INPUT "TELEFONNUMMER";K 1020 GOSUB 30 1030 IF J=-1 THEN PRINT "LISTE VOLL!" 1040 IF J>=0 THEN PRINT "LISTENPOSITION:";J 1050 A$(J)=N$:POKE198,0:WAIT198,1:RETURN 2000 INPUT "TELEFONNUMMER";K 2010 GOSUB 100 2020 IF J=-1 THEN PRINT"NICHT GEFUNDEN!":GOTO2050 2030 PRINT "LISTENPOSITION:";J 2040 PRINT "NAME:";A$(J) 2050 POKE198,0:WAIT198,1:RETURN 3000 INPUT "TELEFONNUMMER";K 3010 GOSUB 170:PRINT"EINTRAG GELOESCHT" 3020 POKE198,0:WAIT198,1:RETURN