我将head定义为全局变量。用户输入整数,该整数应附加到单链列表中。我实现了append函数,但是它给了我一个分割错误。

void Append(int x)
{
    struct Node *temp, *current;
    temp = (struct Node*)malloc(sizeof(struct Node));
    temp -> data = x;


    temp -> next = NULL;

    if(head->next ==NULL)
    {
            head = temp;

    }
    else{

            //current = (struct Node*)malloc(sizeof(struct Node));
            current = head;
            while(1)//current != NULL)
            {
                    if(current->next ==NULL)
                    {
                            current =current -> next;
                            printf("added to the end\n");
                            break;
                    }

                    current = current -> next;
            }
    }
}


主要功能如下:

int main()
{
    //create empty List
    head =NULL;

    printf("How many numbers?\n");
    int n,i,x;
    scanf("%d",&n);
    for(i =0; i<n; i++)
    {

            printf("Enter the number\n");
            scanf("%d",&x);
            //Insert(x);
            Append(x);
            Print();
    }
    return 0;
}

最佳答案

您将head设置为null

head =NULL;


下次访问它时,您尝试访问的是其中一个属性

if(head->next ==NULL)


您无法执行此操作,因为没有head->next,因为head为null

关于c - 在为链表实现附加功能时遇到段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21538220/

10-14 11:02