logo

Przechodzenie po liście pojedynczo połączonej

Przechodzenie jest najczęstszą operacją wykonywaną w prawie każdym scenariuszu listy pojedynczo połączonej. Przechodzenie oznacza jednokrotne odwiedzenie każdego węzła listy w celu wykonania na nim jakiejś operacji. Zostanie to zrobione za pomocą następujących instrukcji.

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

Algorytm

    KROK 1:USTAW PTR = GŁÓWKAKROK 2:JEŚLI PTR = NULL

    WPISZ „PUSTĄ LISTĘ”
    PRZEJDŹ KROK 7
    KONIEC JEŚLI

    KROK 4:POWTÓRZ KROKI 5 I 6, AŻ PTR != NULLKROK 5:DRUKUJ PTR → DANEKROK 6:PTR = PTR → DALEJ

    [KONIEC PĘTLI]

    KROK 7:WYJŚCIE

Funkcja C

 #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; } } } 

Wyjście

 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