gpt4 book ai didi

无法防止链表打印功能崩溃

转载 作者:行者123 更新时间:2023-11-30 14:23:19 24 4
gpt4 key购买 nike

我有高级语言的经验,但我是 C 的新手。我得到了单链表的实现。每次我尝试遍历列表时,我都会耗尽内存(至少我认为这就是正在发生的事情)。下面是列表的实现:

/*Vertex data type.*/
typedef struct vnode {
struct vnode *NEXT;
int DATA;
} VertexBody;
typedef VertexBody *TypeVertex;

/*List data type (no header, just a pointer to first item).*/
typedef TypeVertex TypeList;

这是我的打印功能:

void print_list(TypeList *L) {
TypeVertex v=*L;
while(NEXT(v)!=NULL) {
printf("%d\n", DATA(v));
v=NEXT(v);
}
printf("%d\n", DATA(v));
}

运行 print_list 会给出以下输出(假设列表包含 3 个顶点,数据分别设置为 1,2,3):

1
2
3
-94064

然后程序崩溃了。有什么问题吗?

编辑:将第一段中的“遍历”更改为“迭代”。

最佳答案

在迭代链接列表时,您需要确保当前项不是NULL。验证完毕后,您需要将其打印出来,然后获取下一份。

因此,这段代码:

void print_list(TypeList *L) {
TypeVertex v=*L;
while(NEXT(v)!=NULL) {
printf("%d\n", DATA(v));
v=NEXT(v);
}
printf("%d\n", DATA(v));
}

应该是:

void print_list(TypeList *L) {
TypeVertex v=*L;
while(v!=NULL) {
printf("%d\n", DATA(v));
v=NEXT(v);
}
printf("%d\n", DATA(v));
}

关于无法防止链表打印功能崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12977991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com