2301_79683887 2023-09-17 13:55 采纳率: 70.6%
浏览 2
已结题

为什么总是段错误啊,怎么改啊

本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性。

List Insert( List L, ElementType X ){
    List head=L;
      List pHead = (List)malloc(sizeof(struct Node));
            pHead->Data=X;
    pHead->Next=NULL;
    if(head->Next==NULL){
        head->Next=pHead;
        return L;
    }
    while(head){
        if(X<head->Next->Data){
            pHead->Next=head->Next;
            head->Next=pHead;
            return L;
        }
        head=head->Next;
    }
    if(head->Next=NULL){
        head->Next=pHead;
        return L;
    }
    return L;
}

img

  • 写回答

3条回答 默认 最新

  • 浪客 2023-09-17 16:20
    关注

    执行到18行的时候,前面的while已经让head为NULL了。

    List Insert(List L, ElementType X)
    {
        List head = L;
        List pHead = (List)malloc(sizeof(struct Node));
        pHead->Data = X;
        pHead->Next = NULL;
    
        while (head->Next)
        {
            if (X < head->Data && head != L)
                break;
            head = head->Next;
        }
    
        pHead->Next = head->next;
        head->Next = pHead;
    
        return L;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月25日
  • 已采纳回答 9月17日
  • 创建了问题 9月17日