以下代码在gcc编译器中给出了分段错误。 之前它工作正常,但在更新我的编译器后无法正常工作。 不知道它在一些在线编译器中发生了什么。
#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
struct node* next;
};
//push function to add node at the beginning
void push(struct node** head,int data){
//creating new node
struct node* newNode = (struct node*)malloc(sizeof(struct node));
newNode->data = data;
newNode->next = NULL;
//pointing to head if not null
if((*head) != NULL)
newNode->next = (*head);
//making new node as head
(*head) = newNode;
}
//fuction to display linked list
void display(struct node* head){
while(head!=NULL){
printf("%d ",head->data);
head=head->next;
}
printf("\n");
}
int main(){
struct node* head;
push(&head,20);
push(&head,10);
push(&head,5);
display(head);
return 0;
}
答案 0 :(得分:0)
在内部推送功能中,您可以检查头部是否为NULL,但是当您从主头传递头部时,您尚未将其初始化为NULL。
struct node* head;
应修改为
struct node* head = NULL;