Programiranje u C-u

Praktična vježba 12: Liste

1. Definiraj strukturu nazvanu node, koja sadrži element tipa integer nazvan data, i pokazivač na strukturu tipa node nazvan next_node.
        struct node {
                int data;
                struct node *next_node;
        };
2. Deklariraj tri strukture nazvane node1, node2, node3, tipa node.
 
       struct node node1, node3, node3;
3. Napiši C izraze koji će povezati tri čvora zajedno, sa node1 na vrhu liste, node2 drugim, i sa node3 na kraju liste. Dodijeli vrijednost NULL  node3.next-u da označi kraj liste.
        node1.next_node = &node2;
        node2.next_node = &node3;
        node3.next_node = (struct node *) NULL;
4. Koristeći pokazivač list, tipa node, koji je inicijaliziran na adresi za node1, napiši C izraze koje će kružiti kroz listu i ispisati vrijednost svakog čvora polja podataka.
        while( list != NULL ) {
                printf("%d\n", list->data );
                list = list->next_node;
        }
5. Pretpostavljajući da pokazivač list pokazuje na node2, što radi slijedeći izraz?
        list->next_node = (struct node *) NULL;

        Izraz upisuje NULL u pokazivač next_node , što čini node2 krajem liste,
        i stoga briše node3 iz liste.
6. Pretpostavljajući da je stanje liste kao u točki 3.,napiši C izraze koji će ubaciti novi čvor node1a između čvorova node1 and node2, koristeći pokazivač list (koji trenutno pokazuje na node1). Pretpostavi da pokazivač new_node pokazuje na čvor node1a.
        new_node.next_node = list.next_node;
        list.next_node = new_node;
 

7. Napiši funkciju nazvanu delete_node, koja prihvaća pokazivač na listu i pokazivač na čvor koji će biti izbrisan iz liste, npr.

        void  delete_node(  struct  node  *head,  struct  node  *delnode );
        void  delete_node( struct node *head, struct node *delnode )
        {
                struct node *list;
                list = head;
                while( list->next != delnode ) {
                        list = list->next;
                list->next = delnode->next;
        }
8. Napiši funkciju nazvanu insert_node, koja prihvaća pokazivač na listu, pokazivač na novi čvor koji će biti ubačen i pokazivač na čvor nakon kojeg dolazi do ubacivanja, npr.
        void insert_node( struct node *head, struct node *newnode, struct node *prevnode );
        void insert_node( struct node *head, struct node *newnode, struct node *prevnode )
        {
                struct node *list;
                list = head;
                while( list != prevnode )
                        list = list->next;
                newnode->next = list->next;
                list->next = newnode;
        }

©Copyright B Brown. 1984-1998. All rights reserved.