Добавить элемент в конце связанного списка - PullRequest
0 голосов
/ 23 апреля 2020

Как я могу добавить элемент в конце связанного списка?

Это моя попытка, но я знаю, что есть некоторые неправильные вещи:

typedef struct node_struct{
        int data;
        struct node_struct *next;
}node;

node *end(node *p){
     node *new = malloc(sizeof(node));
     node *next;
     int value;
     printf("Insert new element: ");
     scanf("%d",&value);
     p->next = next;
     new->data = value;
     next = new->data;

     return next;

     return next;
}

Ответы [ 3 ]

1 голос
/ 23 апреля 2020

Прежде чем добавить новый узел, сначала необходимо выполнить итерацию до конца связанного списка.

node *end(node *p){
    // ...

    node *next = p;

    while(next->next){
        next = next->next;
    }

    ...

    next->next = new;

    return new; // Returns end of the linked list
}

Обратите внимание, что обычно следует проверить, имеет ли значение p ноль, и, если это так, вернуть ошибку код или обработать ошибку в противном случае.

0 голосов
/ 23 апреля 2020

Проблема решена, этот код работает хорошо, по крайней мере, я так думаю.

void end(node *head){
     node *new = malloc(sizeof(node));
     node *next;
     int value;
     next = head->next;
     printf("Insert number to add at the end: ");
     scanf("%d",&value);
     new->data= value;
     while(next->next){
          next = next->next;
          }
     next->next = new;
     }
0 голосов
/ 23 апреля 2020

Теперь это мой код, но он все еще не работает:

node *end(node *p){
     node *new = malloc(sizeof(node));
     node *next;
     int value;
     printf("Insert new element: ");
     scanf("%d",&value);
     p->next = next;
     new->data = value;
    while(next->next){
         next = next->next;
    }
    next->next = new;

    return new;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...