Я написал этот C
код из обучающего видео по указателям, и проблема, с которой я столкнулся, заключается в том, что после интеграции head в качестве локальной главной переменной в глобальную переменную, объявленную до main()
, программа больше не входит в цикл forи я не могу понять, почему.Интересно, что я удаляю head=NULL
, цикл, кажется, выполняется.Кто-нибудь знает, где проблема с назначением NULL на голову?
Вот мой код:
#include <stdlib.h>
#include <stdio.h>
struct Node{
int data;
struct Node* next;
};
struct Node* Insert(struct Node* head, int data){
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
(*new_node).data = data;
(*new_node).next = head;
head = new_node;
}
void Print(struct Node* head){
struct Node* temp = (struct Node*)malloc(sizeof(struct Node));
temp = head;
while(temp!=NULL){
printf("%d", (*temp).data);
temp = (*temp).next;
}
printf("\n");
}
int main(){
struct Node* head = NULL;
int n, i, x;
printf("%s", "How large do you want your array to be?\n");
scanf("%d", &n);
for(i; i<n; i++){
printf("Enter a number:\n");
scanf("%d",&x);
head = Insert(head, x);
Print(head);
}
return 0;
}