logo

単一リンクリストのトラバース

トラバースは、単一リンク リストのほぼすべてのシナリオで実行される最も一般的な操作です。トラバースとは、リストの各ノードに 1 回アクセスして、そのノードに対して何らかの操作を実行することを意味します。これは、次のステートメントを使用して実行されます。

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

アルゴリズム

    ステップ1:PTR = ヘッドを設定ステップ2:PTR = NULLの場合

    「空のリスト」を書く
    ステップ 7 に進む
    IFの終わり

    ステップ4:PTR != NULL になるまでステップ 5 と 6 を繰り返します。ステップ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