Algoritmit ja tietorakenteet TM01S Kevät 2004 Tehtävä 9 (Dynaamisesti linkatun listan käsittely.) Dynaamisesti varattua linkattua listaa voi edustaa yksinään sen ensimmäisen solmun alkuosoite, jos huolehditaan siitä, että viimeisen solmun next-kentässä on NULL osoitin, joka tarkoittaa listan päättymistä. Tällaisessa tapauksessa voidaan tehdä määrittely typedef Tpointer Tlist jolloin tyyppi Tlist edustaa siis koko listaa. Kun tälle tyypille määritellään operaatiofunktiot, saamme ADT listan. Tunnilla nähtiin funktioiden initialize, insert_at_list_front ja print_list toteutus. Kirjoita yllämääritellylle tietotyypille Tlist lisäksi funktio void insert_to_list_end (Tlist *list, Titem data); Lista on tässäkin tapauksessa aito ADT ja listan käyttöesimerkkinä oleva sovellus operaatioiden testaamiseksi voisi olla yksinkertaisimmillaan seuraava: void main (void) { Tlist list; initialize_list(&list); insert_to_list_end(&list, 'a'); insert_to_list_end(&list, 'b'); insert_to_list_end(&list, 'c'); insert_to_list_end(&list, 'd'); print_list(list); } Lisätehtävä. KIrjoita listalle vielä funktio int delete_item(Tlist *list, int orderNo); joka poistaa listasta noden sen järjestysnumeron perusteella. Tämän funktion testaamiseksi voit lisätä edellisen tehtävän loppuun rivit: delete_item(&list, 1); //poistaa toisen alkion print_list(list); delete_item(&list, 0); //poistaa ensimmäisen alkion print_list(list); delete_item(&list, 1); //poistaa toisen alkion print_list(list); delete_item(&list, 0); //poistaa ensimmäisen alkion print_list(list); //tulostuu tyhjä lista insert_to_list_end(&list, 'd'); print_list(list);