logo

Преминаване в единично свързан списък

Преминаването е най-честата операция, която се извършва в почти всеки сценарий на единично свързан списък. Преминаването означава посещение на всеки възел от списъка веднъж, за да се извърши някаква операция върху него. Това ще стане с помощта на следните твърдения.

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

Алгоритъм

    ЕТАП 1:SET PTR = HEADСТЪПКА 2:АКО PTR = NULL

    НАПИШЕТЕ „ПРАЗЕН СПИСЪК“
    МИНЕТЕ НА СТЪПКА 7
    КРАЙ НА АКО

    СТЪПКА 4:ПОВТОРЕТЕ СТЪПКИ 5 И 6 ДОКАТО PTR != NULLСТЪПКА 5:ПЕЧАТ PTR→ ДАННИСТЪПКА 6:PTR = PTR → СЛЕДВАЩ

    [КРАЙ НА ЦИКЪЛА]

    СТЪПКА 7:ИЗХОД

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

Изход

 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