所以我创建了两个结构LIST(由头和最后一个指针组成(和NODE(由下一个和上一个指针构成(。我有一个函数create_list(list*p(,它执行以下操作:
-
将头和最后一个指针设置为NULL
-
要求用户为列表输入节点数,还允许用户输入值,并以有序的方式(递增顺序(插入节点
-
完成后,它会显示列表
所以我创建了两个LIST指针变量,并尝试制作两个双链接列表,它非常适合第一个列表,但第二个列表没有初始化。
这是代码:
void create_list(LIST *p){
int x;
printf("enter no of elements to entern");
scanf("%d", &x);
printf("creating a list of size %dn", x);
p->head =NULL;
p->last=NULL;
printf("initialised listn");
for(int i =0; i<x; i++){
ins(p);
}
display(p);
}
int main(){
LIST* list1, *list2;
create_list(list1);
create_list(list2);
return 0;
}
LIST* list1, *list2;
没有做你认为它在做的事情。这些指针指向内存中的一个随机位置。它们需要指向某个LIST
类型。换句话说,您的代码中不存在LIST。这是未定义的行为,所以第一个正确初始化的事实只是偶然的。
例如,如果我希望它们存在于main
的堆栈中:
LIST list1, list2;
create_list(&list1);
create_list(&list2);
现在存在2个LIST
,我们已将它们的地址传递给create_list
。