gpt4 book ai didi

c - 我无法打印链接列表

转载 作者:行者123 更新时间:2023-11-30 21:42:28 24 4
gpt4 key购买 nike

#include<stdio.h>
#include<stdlib.h>

main()
{
struct node
{
int data;
struct node *next;
};

struct node *first=(struct node*)malloc(sizeof(struct node));
struct node *second=(struct node*)malloc(sizeof(struct node));
struct node *third=(struct node*)malloc(sizeof(struct node));

scanf("%d %d %d",&(first->data),&(second->data),&(third->data));
first->next=second;
second->next=third;
third->next=NULL;
struct node *t=(struct node *)first;
f(t);
}

f(struct node *a)
{
while(a!=NULL)
{
printf("%d",a->data);
a= a->next;
}
}

上面的代码给出了警告和错误“在参数列表内声明的结构节点”和“取消引用指向不完整类型的指针”

请帮助我运行代码并解决错误。

最佳答案

有几个问题。

  • 您的函数没有返回类型
  • 您的结构节点仅在main范围内声明。
  • 您在声明 f 函数之前就使用了该函数。
  • 最后但并非最不重要的一点:代码的格式很糟糕。格式对于编译器来说并不重要,但对于包括您在内的人类读者来说才重要

你的程序应该是这样的:

#include <stdio.h>
#include <stdlib.h>

struct node // structure declared at global scope
{
int data;
struct node *next;
};

void f(struct node *a); // declare function

int main() // function has now return type int
{
struct node *first = (struct node*)malloc(sizeof(struct node));
struct node *second = (struct node*)malloc(sizeof(struct node));
struct node *third = (struct node*)malloc(sizeof(struct node));

scanf("%d %d %d", &(first->data), &(second->data), &(third->data));
first->next = second;
second->next = third;
third->next = NULL;
struct node *t = (struct node *)first;
f(t);
}

void f(struct node *a) // function has now return type void
{
while (a != NULL)
{
printf("%d", a->data);
a = a->next;
}
}

免责声明:这个程序只是正确编译而没有警告,但我没有检查它是否真的有意义。

关于c - 我无法打印链接列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51097387/

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