C 有序链表的链表

C 有序链表的链表,c,data-structures,linked-list,C,Data Structures,Linked List,我正在尝试创建(有序)链接列表的(有序)链接列表。列表链接列表由其成员列表的第一个节点携带。我正试图通过以下代码实现这一点,但在我试图查看列表列表中的第二个节点后,我的程序立即崩溃 以下是我试图构建的数据结构示意图: 代码: #包括 #包括 #包括 结构节点{ 整数; 结构节点*下一步; 结构节点*lsnext; }; typedef结构节点; 节点*插入值(节点*列表,int值); 无效显示(节点*); 节点*插入器(节点*列表,int值); int main() { 节点*globalLi

我正在尝试创建(有序)链接列表的(有序)链接列表。列表链接列表由其成员列表的第一个节点携带。我正试图通过以下代码实现这一点,但在我试图查看列表列表中的第二个节点后,我的程序立即崩溃

以下是我试图构建的数据结构示意图:

代码:

#包括
#包括
#包括
结构节点{
整数;
结构节点*下一步;
结构节点*lsnext;
};
typedef结构节点;
节点*插入值(节点*列表,int值);
无效显示(节点*);
节点*插入器(节点*列表,int值);
int main()
{
节点*globalList=NULL,*列表,*开始,*保存;
int nbrOfLists、listNo、NBROFLVAL、valNo、val;
printf(“\n输入列表数:”);
scanf(“%d”和“&nbrOfLists”);
如果(nbrOfLists<0)
返回-1;
for(listNo=0;listNo下一步;
printf(“\n列表%d为:”,列表编号+1);
显示(列表);
}
printf(“\n\n最终列表为:”);
显示(全球列表);
printf(“第一个列表是”);
显示(保存);
printf(“第二个列表为”);
显示(保存->lsnext);//此处崩溃
返回0;
}
节点*插入值(节点*列表,int值)
{
Node*newNode,*m;
newNode=malloc(sizeof(Node));
新建节点->编号=值;
if(list==NULL)
{
newNode->next=NULL;
返回newNode;
}
如果(值<列表->编号)
{
新建节点->下一步=列表;
返回newNode;
}
m=列表;
while(m->next)
{
如果(值next->number)
打破
m=m->next;
}
newNode->next=m->next;
m->next=newNode;
退货清单;
}
无效显示(节点*nodex){
while(nodex)
{
printf(“%d->”,nodex->number);
nodex=nodex->next;
}
}

问题是您从未分配lsnext节点指针。在重置开始指针之前,您需要确保将此指针设置为“列表”。您不需要以下代码行:

start=start->lsnext;

这修复了您提到的崩溃问题,但是源代码还有其他错误。通过GDB运行应用程序在确保指针值在每一步都是您认为应该的值方面是非常宝贵的,同时也是确保可读性的源代码格式化程序,从而更容易区分哪些代码属于哪些块。

将确保在从代码块复制我的代码后进行格式化。然而,你能告诉我我能做些什么来解决这个问题吗。我的意思是如何分配lsnext节点指针。我的回答的前两句话告诉你lsnext应该分配给什么。
start=start->lsnext;