gpt4 book ai didi

c - 链表程序未给出预期结果

转载 作者:行者123 更新时间:2023-11-30 20:57:12 27 4
gpt4 key购买 nike

我试图设置 head -> data =10,然后在链表的开头添加 10 个值 (101-110)。

目前我得到输出:10

有人可以帮助我吗?

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *next;
};
void main()
{
struct node *head, emp;
int num = 10, i;
void add_beg(struct node *q, int n);
void traverse(struct node *q);
clrscr();
head = (node*)malloc(sizeof(node));
head->data = num;
head->next = NULL;
for (i= 101; i<=110; i++)
{
add_beg(head, i);
}

traverse(head);
getch();

}

void add_beg(struct node *q, int num)
{
int n = num;
struct node *temp;
temp = (node *)malloc(sizeof(node));
temp->data = n;
temp->next = q;
q = temp;
}

void traverse(struct node *q)
{
while(q!=NULL)
{
printf("%d\n",q->data);
q = q->next;
}
}

最佳答案

您需要将void add_beg(struct node *q, int num)更改为void add_beg(struct node **q, int num)

传递的指针不能改变,我的意思是实际地址被复制并且在add_beg()之外不会改变,指向的值可以改变。所以如果你有一个指向指针的指针,你可以改变指向的指针(头)。

因此,为了让 head 返回到主函数,您需要像这样调用它 add_beg(&head, i); 并将上述更改更改为 add_beg()。

关于c - 链表程序未给出预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11871657/

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