2012-01-28 9 views
0
void addToEnd() 
{ 
    newnode = (struct node*)malloc(sizeof(struct node)); 

    printf ("Enter the customer name :"); 
    scanf ("%s", newnode->cName); 

    printf ("\nEnter customer number :"); 
    scanf ("%d", &newnode->cNumber); 

    printf ("\nEnter transaction description :"); 
    scanf ("%s", newnode->tDescrip); 

    newnode->next = NULL; 
    if(list==NULL) 
     list = newnode; 
    else if (list != NULL && newnode < list) 
    { 
     newnode->next = list; 
     list = newnode; 
    } 
    else 
    { 
     temp = list; 
     while (temp != NULL) 
     { 
      if (newnode > temp) 
      { 
       prev = temp; 
       temp = temp->next; 
      } 
     } 
     newnode->next = prev->next; 
     prev->next = newnode; 
    } 
} 

私はこのコードを試しましたが、開始コードに追加するだけですが、最後にノードを追加する方法はありますか?最後にノードを追加する方法(単一リンクリスト)

+1

をノードを追加するために、以下の追記機能を研究してください。 –

答えて

2

次のことがわかりにくいかどうかを見てみましょう。

単にポインタを変更:

struct node** tail = &list; 
while (*tail != NULL) { 
    tail = &((*tail)->next); 
} 
*tail = newnode; 
+0

このコードはあまり見つからないのはなぜですか?これは、CがJavaよりも表現力が優れている場所の1つです。いいえ 'if'、簡潔なコード。 –

1

あなたは終わりを見つける必要があるリンクされたリストにして

append(int num) 
{ 
    struct node *temp,*r; 
    /* CREATING A NODE AND ASSIGNING A VALUE TO IT */ 

    temp= (struct node *)malloc(sizeof(struct node)); 
    temp->data=num; 
    r=(struct node *)p; 

    if (p == NULL) /* IF LIST IS EMPTY CREATE FIRST NODE */ 
    { 
     p=temp; 
     p->next =NULL; 
    } 
    else 
    { /* GO TO LAST AND ADD*/ 

     while(r->next != NULL) 
      r=r->next; 
      r->next =temp; 
      r=temp; 
      r->next=NULL; 
    } 
}/* ADD A NEW NODE AT BEGINNING */ 
関連する問題