-
Bez domácího úkolu
-
Testík z přednášky
-
Úkoly na cvičení:
-
Dodělání chybějících rozšíření příkladu z minulého cvičení
-
Rozšíření: Upravte spojovaný seznam na oboustranně spojovaný
-
Rozšíření: Vkládejte položky tak, aby byl seznam seřazený podle položek (délka, lexikograficky)
-
Rozšíření: Odeberte položku ze seznamu, jejíž hodnotu zadá uživatel
-
Vypište obsah seznamu od začátku a od konce.
-
Všechny operace budou umístěny v samostatných funkcích, nikoli funkci main()
-
Otestujte hraniční případy: žádný prvek nebo jeden prvek && vkládání na začátek/konec
-
Vytvoření nové struktury (struct) obsahující ukazatel na začátek a konec spojovaného seznamu
-
využijte typedef tak, aby nebylo nutné psát struct list myList; ale stačilo list myList;
-
Modifikace existujících funkcí tak, aby obdržely potřebné data pro aktualizaci struktury list vhodně pomocí struct list
-
Zkuste navrhnout, jak implementovat funkci isEmpty() tak, aby fungovala v konstantním čase (více možností)
-
Zkuste navrhnout, jak implementovat funkci getSize() tak, aby fungovala v konstantním čase (vrátí počet položek v seznamu)
-
Využijte pro ladění debugger a postupy z přednášky
-
Vytvoření testovacího programu, který srovná čas potřebný pro vložení velkého (ale předem známého) množství položek do a) pole a do b) spojovaného seznamu
-
pro měření času použijte funkce z knihovny time.h
-
time() vrací čas s přesností na 1 sekundu (nevhodné)
-
clock() vrací s přesností typicky 1ms (makro konstanta CLOCKS_PER_SEC pro získání počtu tiků za sekundu)
clock_t elapsed = -clock();
// measured operation
elapsed += clock();