Försättsblad till skriftlig tentamen vid Linköpings Universitet

Relevanta dokument
Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

TDDC30 Programmering i Java, datastrukturer och algoritmer

Facit Tentamen TDDC (7)

Teoretisk del. Facit Tentamen TDDC (6)

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

TDDC30 Programmering i Java, datastrukturer och algoritmer

Teoretisk del. Facit Tentamen TDDC (6)

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

TDDC30 Programmering i Java, datastrukturer och algoritmer

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Facit Tentamen TDDC kl (6)

Tentamen TEN1 HI

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Föreläsning 14 Innehåll

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 12 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 12 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 10 Erik Nilsson, Institutionen för Datavetenskap, LiU

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.

TDDC Terminologi Uppdaterad Fö #1

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC91 & TDDE22 & 725G97 Datastrukturer och algoritmer Datortentamen (DAT1) , 08 12

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

Tentamen TEN1 HI

Seminarium 13 Innehåll

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Trädstrukturer och grafer

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

Föreläsning 9 Innehåll

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd

Tentamen Datastrukturer för D2 DAT 035

Tentamen, Algoritmer och datastrukturer

Programmering i C++ EDA623 Dynamiska datastrukturer. EDA623 (Föreläsning 11) HT / 31

TDIU01 / 725G

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Programmering för språkteknologer II, HT2011. Rum

Vad har vi pratat om i kursen?

Tentamen Datastrukturer (DAT036)

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Tentamen i Algoritmer & Datastrukturer i Java

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen

Föreläsning 9 Innehåll

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Föreläsning 13 Innehåll

Länkade strukturer, parametriserade typer och undantag

Lösningsförslag till tentamen Datastrukturer, DAT037,

Tentamen Datastrukturer, DAT037 (DAT036)

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Föreläsning 3 Datastrukturer (DAT037)

Tentamen Datastrukturer D DAT 035/INN960

Sökning. Översikt. Binärt sökträd. Linjär sökning. Binär sökning. Sorterad array. Linjär sökning. Binär sökning Hashtabeller

Programmering i C++ EDAF30 Dynamiska datastrukturer. EDAF30 (Föreläsning 11) HT / 34

Tentamen i Algoritmer & Datastrukturer i Java

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Föreläsning 9. Sortering

Datastrukturer. föreläsning 6. Maps 1

Listor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.

DAI2 (TIDAL) + I2 (TKIEK)

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Träd Hierarkiska strukturer

Tentamen Datastrukturer (DAT037)

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

Datastrukturer. Föreläsning 5. Maps 1

Datastrukturer och algoritmer. Innehåll. Tabell. Tabell - exempel. Gränsyta till Tabell. Tabell. Modell. Hashtabell Relation, lexikon.

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4

Algoritmer. Två gränssnitt

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Transkript:

Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2013-03-27 Sal Tid 08:00 12:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal sidor på tentamen (inkl. försättsbladet) Jour/kursansvarig Samling i korridoren vid SU18 TDDC30 DAT1 Programmering i Java, datastrukturer och algoritmer IDA 6 (4 teoretiska och 2 praktiska) 8 Jonas Lindgren Telefon under skrivtid 013-282490 Besöker salen ca kl. - Kursadministratör (namn, telefon, mailadress) Tillåtna hjälpmedel Övrigt Anna Grabska Eklund, 013-282362, anna.grabska.eklund@liu.se Inga Information och frågor hanteras genom Tentaklienten. Preliminära poänggränser: 3: 10 4: 14 5: 18

Tentamen TDDC30 2013-03-27 2 (8) Teoretisk del Anvisningar: Uppgifterna i denna del ska lösas med penna och papper. Vid tentamens slut lämnas svaren till denna del in till tentamensvakterna. Starta en tentaklient genom att högerklicka på skrivbordet, för att kunna ta del av allmän information och kunna ställa frågor. 1. (3p) "Snabba frågor" Alla svar motiveras väl. a) Vad innebär polymorfi? (0.5p) b) Vad innebär det att en sorteringsalgoritm är stabil? (0.5p) c) Vad är skillnaden mellan en klass och en instans? (0.5p) d) Vad är syftet med ett interface? (0.5p) e) Vad skiljer synligheten protected från private och public? (0.5p) f) Vad är skillnaden mellan en abstrakt datatyp och dess implementation? (0.5p) 2. (3p) "Datastrukturer" Harry har byggt följande binära trädstruktur: 7 8 6 2 1 4 5 3 a) Ange i vilken ordning siffrorna skulle skrivas ut genom en levelorder-traversering. (0.5p) b) Visa med en bild hur ett träd med värdena [ 3 2 1 6 5 4 8 7 ] skulle kunna se ut om det vore en fullständig binär minheap. (1p) c) Vad innebär att ett träd är fullt? (0.5p) d) Visa med en bild hur det binära trädet som representeras av fältet [ 9 5 _ 4 6 3 _ ] ser ut. (_ innebär en plats i fältet som saknar värde.) (0.5p) e) En preorder-traversering av ett binärt sökträd ger utskriften [ 4 2 3 6 5 7 ]. Visa med en bild hur det binära sökträdet ser ut. (0.5p)

Tentamen TDDC30 2013-03-27 3 (8) 3. (3p) "Tidskomplexitet" a) Antag att en enkellänkad lista har tre olika remove-metoder. Ange tidskomplexiteten, samt motivera varför, för: (1p) * En remove-metod som alltid tar bort det första elementet i den enkellänkade listan. * En remove-metod som alltid tar bort det sista elementet i den enkellänkade listan. * En remove-metod som tar bort det n'te elementet i den enkellänkade listan, där n är en parameter som anges när metoden körs. b) Ange tidskomplexiteten i värsta fallet, med avseende på n, för följande två metoder. (2p) void foo(int n) { for (int i = 0; i < n; i = i+1) { for (int j = 0; j < 5; j = j+1) { System.out.println(i + " x " + j); void bar(int n) { foo(n); for (int i = 0; i < n; i = i+1) { for (int j = 0; j < n; j = j+1) { foo(i); for (int i = 0; i < n; i = i+1) { foo(i);

Tentamen TDDC30 2013-03-27 4 (8) 4. (3p) "Algoritmer" [ 1 5 2 6 7 2 4 ] a) Sortera ovanstående fält med sorteringsalgoritmerna nedan, genom att byta plats på värden inom fältet. Sorteringen ska leda till stigande ordning, dvs 1, 2, 3... Ange tydligt i svaret hur fältet ser ut innan varje platsbyte, samt vilka index som är på väg att byta plats. (2p) * Insertionsort * Selectionsort b) Sök fram det 5:e minsta elementet (dvs. på index 4) ur fältet nedan genom att använda en inplace quickselect. Välj alltid värdet längst till höger som pivot-element. Beskriv tydligt varje steg. (1p) [ 2 5 2 6 7 1 4 ]

Tentamen TDDC30 2013-03-27 5 (8) Praktisk del Anvisningar: Uppgifterna i denna del ska lösas på dator. När alla uppgifter är lösta ska alla filer som ska examineras lämnas kvar på kontot. Uppgifterna ska alltså inte skickas in via tentamenssystemet. Starta en tentaklient genom att högerklicka på skrivbordet, för att kunna ta del av allmän information och kunna ställa frågor. Försök att lösa alla uppgifter så långt som möjligt. Om du inte kan lösa en uppgift, förenkla uppgiften. Glöm i så fall inte att beskriva förenklingen med en tydlig kommentar i koden. Poängavdrag ges beroende på förenklingens storlek. Tänk på läsbarhet och namngivning, och även på variablers och metoders synlighet. Ni behöver inte skriva javadoc för er kod. För att importera projekt i Eclipse, File Import, sedan General Existing projects into workspace, sedan Browse, och välj projekt i given_files. Viktigt, glöm inte att kryssa i Copy projects into workspace! Skapa ett nytt projekt i Eclipse för varje uppgift. Det kan även vara en god idé att göra en säkerhetskopia av projektet när man går från t.ex. deluppgift a till deluppgift b. Som en bilaga finns även en lista över vanliga unixkommandon.

Tentamen TDDC30 2013-03-27 6 (8) 5. (4p) Den Oändliga Listan Harry experimenterar med länkade listor, och har bestämt sig för att skriva en cirkulär dubbellänkad lista. Han har kommit så långt att han skrivit ett testprogram samt en referenslösning som beter sig som en cirkulärt länkad lista, men i grund och botten inte är det. Han är dock inte riktigt klar med den cirkulärt dubbellänkade listan än, och för att hinna klart har han lejt in dig som sitt ess i skjortärmen. Importera Harrys projekt från given_files och skriv klart! En cirkulärt dubbellänkad lista: a) Harry har än så länge gått bet på remove-metoden för listan. Metoden ska ta in ett index som ett heltal, och ta bort elementet på den platsen. Dock ska den kunna hantera index som är större än storleken på listan, och även negativa index! Index som är större än listan ska leda till att sökningen fortsätter gå runt och runt i listan, tills den har gått så många steg som index anger, sen ska det elementet den landar på tas bort. Negativa index ska innebära att sökningen efter elementet som ska tas bort går baklänges lika många steg som absolutvärdet av index. Även för negativa index ska sökningen kunna fortsätta gå runt och runt på liknande sätt som för stora positiva index. Om det första elementet i den länkade listan tas bort, ska det andra elementet bli det nya första elementet. Implementera denna remove-metod. (3p) b) Harry vill ha ett gemensamt interface för både sin CircularLinkedList och FakeCircularLinkedList. Skapa interfacet CircularLinkedListInterface och låt båda implementationerna av den länkade listan implementera detta. (1p)

Tentamen TDDC30 2013-03-27 7 (8) 6. (5p) FarmTree Stefan gillar mjölkprodukter. Kor är källan till allt gott i världen, och Stefan vill därför hitta ett sommarjobb som låter honom komma närmare kor i sitt vardagliga liv. Att hitta en position som någon slags dräng på en näraliggande gård, och se med egna ögon hur hans favoritmat och dryck produceras, vore toppen! Dock gäller det att hitta rätt ställe att jobba på, inte för långt bort från bostaden, men samtidigt med tillräckligt många kor för att det ska bli en intressant upplevelse. För att lösa detta på bästa sätt har Stefan bestämt sig för att lagra kandidat-gårdarna i ett binärt sökträd, med antal kor som varje gård har som nyckel för just den gården. Detta blir med andra ord en ordbok, som mappar antal kor(heltal) till gårdsnamn(sträng). Importera Stefans projekt från given_files, och arbeta vidare med hans program enligt nedan. Parent En trädnod: Nyckel Värde Left Right a) Ett första steg för att se om hans träd-implementation är korrekt är att skriva en printallmetod, som skriver ut alla nyckel-värdepar i trädet till terminalen, ett par per rad. Detta ska implementeras rekursivt, och paren ska skrivas ut antingen i preorder, levelorder eller postorder, ni får själva välja vilket. Ange tydligt vilken av alternativen ni valde! (2p) Tips. Använd en hjälpmetod. b) Stefans program saknar en korrekt add-metod. Add ska ta in en nyckel och ett värde, och lagra det värdet i trädet på positionen som ges av nyckeln. Hela trädet är ett binärt sökträd med avseende på nyckeln, där mindre nycklar lagras till vänster och större till höger. Implementera denna metod. (3p)

Tentamen TDDC30 2013-03-27 8 (8) Vanliga Unix-kommandon mkdir katalognamn rmdir katalognamn cd katalognamn cp källfil målfil mv källfil målkatalog mv orgnamn nyttnamn ls cat filnamn Skapa katalog Ta bort katalog Sätt aktuell katalog Kopiera fil från källfil till målfil Flytta källfil till målkatalog Byt namn på filen orgnamn till nyttnamn Skriver ut alla filer i aktuell katalog Skriver ut innehållet i filen filnamn