#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node* next;
}node;
void push(node* head,int d);
int main()
{
node* head = NULL;
int n;
scanf("%d",&n);
while(n!=-1){
push(head,n);
scanf("%d",&n);
}
node* temp = head;
while(temp!=NULL){
printf("%d ->",temp->data);
temp=temp->next;
}
printf("NULL");
}
void push(node* head,int d)
{
node* new = (node*)malloc(sizeof(node));
new->data=d;
if(head==NULL){
new->next=NULL;
head=new;
}else {
new->next=head;
head=new;
}
}
Приведенный выше код не работает. Должны отображаться элементы, введенные до ввода -1, но это не так.
push(head,n);
void push(node** head,int d)
{
node* new = (node*)malloc(sizeof(node));
new->data=d;
if(*head==NULL){
new->next=NULL;
*head=new;
}else {
new->next=*head;
*head=new;
}
}
После добавления этих двух изменений код работает нормально , Почему замена одного указателя на двойной указатель заставляет код работать, а все остальное остается неизменным?