2012-01-28 3 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; 
    } 
} 

Я пробовал этот код, но код tis просто добавляется, но не заканчивается, как я могу добавить узел в конец?Как добавить узел в конец (отдельно связанный список)

+1

Вы должны найти конец. –

ответ

2

Посмотрим, не понятно ли следующее.

Просто измените указатель:

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

Почему этот код так редко встречается? Это одно из мест, где C лучше, более выразительно, чем java. Нет 'if', краткий код. –

1

Пожалуйста, изучите следующую функцию на добавление для добавления узла, чтобы Linked List

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 */ 
Смежные вопросы