logo

Kuljetaan yksittäin linkitetyssä luettelossa

Läpikulku on yleisin toiminto, joka suoritetaan melkein kaikissa yksittäislinkitettyjen luetteloiden skenaarioissa. Läpikulku tarkoittaa vierailemista luettelon jokaisessa solmussa kerran suorittaakseen sille jonkin toiminnon. Tämä tehdään käyttämällä seuraavia lauseita.

 ptr = head; while (ptr!=NULL) { ptr = ptr -> next; } 

Algoritmi

    VAIHE 1:SET PTR = PÄÄVAIHE 2:JOS PTR = NULL

    KIRJOITA 'TYHJÄ LISTA'
    SIIRRY VAIHEEEN 7
    JOS LOPPU

    VAIHE 4:TOISTA VAIHE 5 JA 6, JOTKA PTR != NULLVAIHE 5:TULOSTA PTR→ TIEDOTVAIHE 6:PTR = PTR → SEURAAVA

    [SILMUKSEN LOPPU]

    VAIHE 7:POISTU

C-toiminto

 #include #include void create(int); void traverse(); struct node { int data; struct node *next; }; struct node *head; void main () { int choice,item; do { printf('
1.Append List
2.Traverse
3.Exit
4.Enter your choice?'); scanf('%d',&choice); switch(choice) { case 1: printf('
Enter the item
'); scanf('%d',&item); create(item); break; case 2: traverse(); break; case 3: exit(0); break; default: printf('
Please enter valid choice
'); } }while(choice != 3); } void create(int item) { struct node *ptr = (struct node *)malloc(sizeof(struct node *)); if(ptr == NULL) { printf('
OVERFLOW
'); } else { ptr->data = item; ptr->next = head; head = ptr; printf('
Node inserted
'); } } void traverse() { struct node *ptr; ptr = head; if(ptr == NULL) { printf('Empty list..'); } else { printf('printing values . . . . .
'); while (ptr!=NULL) { printf('
%d',ptr->data); ptr = ptr -> next; } } } 

Lähtö

 1.Append List 2.Traverse 3.Exit 4.Enter your choice?1 Enter the item 23 Node inserted 1.Append List 2.Traverse 3.Exit 4.Enter your choice?1 Enter the item 233 Node inserted 1.Append List 2.Traverse 3.Exit 4.Enter your choice?2 printing values . . . . . 233 23