Когда список не пустой, ваша функция insertAtBeginning()
сначала связывает новый элемент со старым списком, а затем:
temp->link = NULL;
, так что ссылка на содержимое старого списка теряется.Это следует делать только при создании первого элемента списка.Он должен быть в предложении else
.
Вы также можете извлечь *head = temp;
из блока if
, поскольку это необходимо сделать в любом случае.
void insertAtBeginning(Node** head, int dat) {
Node *temp = malloc(sizeof(Node));
temp->data = dat;
if(*head != NULL){
temp->link = *head;
} else {
temp->link = NULL;
}
*head = temp;
}
Однако теперь, когда я смотрю на это, if
не является необходимым, поскольку *head
будет NULL
именно в том случае, когда вы хотите назначить NULL
.Так что это может быть просто:
void insertAtBeginning(Node** head, int dat) {
Node *temp = malloc(sizeof(Node));
temp->data = dat;
temp->link = *head;
*head = temp;
}