指向不完整类型的指针解引用错误



我做了这个代码,以下在书中给出的函数"C中的数据结构基础",我做了下面的代码来实现一个简单的链表,但我似乎没有得到我错的地方,因为书中的代码应该是正确的:

#include<stdio.h>
#include<stdlib.h>
typedef struct node *listpointer;
typedef struct        {
int data;
listpointer link;
}  node;
void print(listpointer first)
 {
while  (first)      {
           printf("%dn",first->data);
           first=first->link;
}
 }
void addAtFront(listpointer *first,int n)
{
listpointer t=*first,temp;
temp=malloc(sizeof(node));
int i=1;
while (i <= n)  {
                t=t->link;
                i++;
}
if(*first)  {
       temp->link=t->link;
        temp->data=90; 
       t->link=temp;
}
else 
{
      *first=temp;
        temp->link=NULL;
}
}       

listpointer createList( )
{
listpointer first,second;
if(first=malloc(sizeof(node)))  {
           first->data=67;
           if(second=malloc(sizeof(node)))  {
         second->data=65;
         first->link=second;
         second->link=NULL;
           }
}
return first;
  }


    main( )
   {
listpointer first=createList( );
addAtFront(&first,2);
print(first);
   }            

你有这个typedef:

typedef struct node *listpointer;

但是你从来没有定义过struct node。但是,您有匿名struct typedefnode的定义:

typedef struct {
    int data;
    listpointer link;
} node;

可能你的意思是:

typedef struct node {
    int data;
    listpointer link;
} node;

您定义的结构体没有标记,

typedef struct node *listpointer;
typedef struct        {
int data;
listpointer link;
}  node;

所以listpointer应该指向的struct node仍然是一个不完全类型。

你应该给结构体一个标签,

typedef struct node { ...

listpointer指向一个完整的对象类型

为什么我得到这个错误是因为我没有包含包含结构定义的头文件

相关内容

  • 没有找到相关文章

最新更新