链表中按顺序插入的操作用C语言实现的结果不对

listnodep insert_mid(listnodep head, listnodep newnode) //按排序顺序进行链表的建立
{
if (head == NULL)
head = newnode;

listnodep temp = head;
listnodep pre;
while (temp->nextptr != NULL)
{
    if (newnode->data > temp->data)
    {
        pre = temp;
        temp = temp->nextptr;
    }
    else
        break;
}
pre->nextptr = newnode;
newnode->nextptr = temp;
return head;

}
这是我刚刚写的一个调用函数,实现的功能:按升序顺序进行链表排列;传入的参数:指向链表的头指针,要插入新的结点;
但是没有达到想要实现的功能,请大神赐教

3个回答

感觉错误好多,,,表达也不清晰

当插入第一个节点的时候,pre没有初始化,程序会断掉的。

要将创建头节点和加入新的节点区分开来

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问