链表实现中的分段错误

时间:2016-10-28 18:45:52

标签: gcc linked-list segmentation-fault

以下代码在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;
}

1 个答案:

答案 0 :(得分:0)

在内部推送功能中,您可以检查头部是否为NULL,但是当您从主头传递头部时,您尚未将其初始化为NULL。

struct node* head; 

应修改为

struct node* head = NULL;