gpt4 book ai didi

c - 单链表的结果不正确

转载 作者:行者123 更新时间:2023-11-30 15:40:28 25 4
gpt4 key购买 nike

程序编译,但是当我创建列表并尝试显示它时,我没有得到与输入相同的内容,所以我猜我的代码有问题。因此,如果有人能指出错误所在并可能纠正它,那就太好了:

struct client
{
char name[30];
struct client *next;
};

struct client* FindTailClient(struct client* head)
{
while( head->next != NULL)
{

head = head->next;
}
return head;
}

struct client* AddClient(struct client** head, char name[])
{
struct client* newnode =malloc(sizeof(struct client));
if (newnode == NULL) {
fprintf(stderr, "failed to allocate memory.\n");
return -1;
}
newnode->next = NULL;
strcpy(newnode->name,name);
if(*head == NULL)
{
*head = newnode;
}
else
{
struct client* node = FindTailClient(*head);
node->next = newnode;
}
}

void Display(struct client *head)
{
struct client *current = head;
while (current != NULL)
{
printf("%s",current->name);
current = current->next;
}
}

int main()
{
int i;
struct client *head ;


char name[30];
for (i = 0; i < 5; i++)
{
scanf("%s",name);
AddClient(head,name);
}
Display(head);
}

最佳答案

在 AddClient() 中,您声明了 struct client **head,但您正在向其传递 struct client *

去掉多余的星号(将 ** 更改为 * 并将 *head 更改为 head AddClient)并且它应该可以工作。或者,将 &head 传递给 AddClient(),尽管我看不出有任何理由让指针指向列表头部的指针。

关于c - 单链表的结果不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21009577/

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