gpt4 book ai didi

c - 取消引用链表中的指针

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:29 25 4
gpt4 key购买 nike

我在 tail->next=(list)malloc(sizeof(node)) 中遇到错误。有人能告诉我为什么吗?这段代码在 NPTEL 的一个视频中有讲授,它可以毫无错误地运行。

tail->next=(list)malloc(sizeof(node))有没有问题?

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

main(){
int choice,dat;

typedef struct {
int data;
struct node* next; //pointer to a node
}node;

typedef node* list;

list head,tail;

head=tail=NULL;

printf("Enter Data? (1/0)\n");
scanf("%d",&choice);

if(choice==1)
{
printf("Give Data?\n");
scanf("%d",&dat);
tail=(list)malloc(sizeof(node));
tail->data=dat;
tail->next=NULL;
head=tail;

printf("Enter Data? (1/0)\n");
scanf("%d",&choice);
}

while(choice==1){
printf("Give Data?\n");
scanf("%d",&dat);

tail->next=(list)malloc(sizeof(node));//showing error
tail->next->data=dat;
tail->next->next=NULL;
tail=tail->next;
}

tail=head;

while(tail!=NULL){
printf("%d",tail->data);
tail=tail->next;
}
}

最佳答案

你的问题在这里:

typedef struct {
int data;
struct node* next; // <-- problem
} node;

您将 struct node 声明为与您的(匿名)struct node 不同的类型。

您可以通过给匿名结构命名 node 来解决这个问题,这样您就可以在定义中引用它:

typedef struct node {
int data;
struct node* next;
} node;

现在只有一种名为节点的类型。


您的 main 函数也缺少返回类型。应该是:

int main() {

关于c - 取消引用链表中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41365284/

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