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

#include <stdio.h>
#include <stdlib.h>

typedef struct node {
    int a;
    struct node *next;
    struct node *prev; 
} Node;


Node *AddElem(Node **Root, int i){
    Node *Head, *p;
    //Node *List = *Root;
        Head = malloc(sizeof(Node));
        Head->a = i;
        Head->prev = NULL;
        Head->next = NULL;
    if(*Root == NULL){
        *Root = Head;
        printf("List == NULL\n");
        return 0;
    }
    // Добавляем элемент
    while(Head->next != NULL){ 
        Head = Head->next; // До конца списка
        (*Root)->prev = Head;
        Head->next = *Root;
    }
    //Head->next = List;
    //Head = List;
    return *Root;
}

void NPrint(Node *Root){
    Node *p = Root;
    
    while(p != NULL){
        printf("N-> %d\n", p->a);
        //p = p->right;
        p = p->next;
    }
} 


int main(){
    Node *Root = NULL;
    Root = AddElem(&Root, 2);
    Root = AddElem(&Root, 3);
    Root = AddElem(&Root, 6);
    Root = AddElem(&Root, 4);
    Root = AddElem(&Root, 9);
    Root = AddElem(&Root, 10);
    
    NPrint(Root);
    //NDel(Root); 
    
    return 0;
}

Здравствуйте, подскажите как добавить элемент в конец двусвязного списка? Выводит List == NULL;


Ответы (0 шт):