gpt4 book ai didi

c - 动态链表,链接有问题

转载 作者:太空宇宙 更新时间:2023-11-04 07:23:40 24 4
gpt4 key购买 nike

我正在尝试使用指针将结构添加到已创建的节点。问题是我没有正确链接它们。我希望有人能帮助我。参数是正确的,一个是结构,另一个是一个字符串,它将进入我新创建的与 struct s 连接的结构。

(节点s)--->(新节点)-->空我尝试调用 fileInsert(),当我尝试查看新节点中的数据时,它仍然为空。 filenames 是指向链接节点 s 和我的新节点的结构节点指针。有人能指出我正确的方向吗?

void fileInsert(struct node *s, char *filename){
struct node *current=s->filenames;
while(current!=NULL){

current=current->filenames;
}
struct node* f=NULL;
f=(struct node*)malloc(sizeof(struct node));
strcpy(f->data, filename);
current=f;
f->filenames=NULL;
}

最佳答案

有两种方法。

一是让新节点成为列表的开头:

struct node* fileInsert(struct node *s, char *filename) {
struct node *current=s;

struct node* f=NULL;
f=(struct node*)malloc(sizeof(struct node));
strcpy(f->data, filename);
f->filenames=current;
return f;
}

另一种是将其附加到当前列表,这有点像您可能要尝试做的事情。

struct node* fileInsert(struct node *s, char *filename) {
struct node *current=s;

if (current != null) {
while(current->filenames!=NULL){
current=current->filenames;
}
}
struct node* f=NULL;
f=(struct node*)malloc(sizeof(struct node));
strcpy(f->data, filename);
f->filenames=NULL;
if (current == null) {
current = f;
} else {
current->filenames = f;
}
return current;
}

第一个简单的新建一个节点,然后指向current,把它加到最前面。如果 current 是一个节点或为 null,则此方法有效。

第二个检查列表是否存在,如果存在,它会转到列表的末尾(通过在文件名中查找空指针)并添加新节点,如果不存在,它将创建新节点node 根节点

两个例程都返回列表的开头。

关于c - 动态链表,链接有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19871238/

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