Laborationen går ut på att implementera en typ för tabell, dels som m h a fält och dels m h a binärt sökträd, samt ett interaktivt program som använder en tabell.
Syftet med laborationen är att ni ska få hantera lite större datatyper, dynamiska datastrukturer, samt att jämföra olika implemantationer av samma sak.
Följande operationer ska åtminstone finnas:
Att ni använder i/u för insättning/uttagning och att Ctrl-d avslutar progmammet är viktigt för den kommande testen (se uppgift 4).muppet36>falttabell --pgmnamn i Rogardt 7725408 --sätt in f Ilona --finn telnr Ilona finns ej i tabellen i Ilona 7725402 i Jan 7725409 i Bengt 7725404 u Jan --tag ut f Bengt 7725404 p --skriv ut Bengt 7725404 Ilona 7725402 Rogardt 7725408 muppet36> --Ctrl-d avslutar programmet
Det är också viktigt att ni inte använder representationen av tabelltypen i programmet.
För att sökning i ett binärt sökträd ska gå snabbt är det viktigt att det är väl balanserat och en dålig algoritm för uttagning kan snabbt leda till obalans. Nedan är en bra uttagningsalgoritm beskriven.
I kursbiblioteket finns ett program slumpnamn som skiver några slumpmässiga insättningar och uttagningar på skärmen. Utskriften kan dirigeras om till en fil genom att man skriver slumpnamn>slumpfil. Inläsningen till huvudprogrammet dirigeras om till filen genom att man skriver tabell<slumpfil. Lägger man sen till unix-kommandot time (dvs time tabell<slumpfil) så får man reda på hur lång tid exekveringen tar.
Jämför på detta sätt de båda implementeringarna av tabell för några olika slumpfiler. Är det någon skillnad? Försök förklara varför. Vad skulle hända om indatafilen var sorterad?
(För att testen ska fungera för fält-varianten bör längden av fältet vara ca 8000.)