2

「Fundamental Of Data Structures in 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("%d\n",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);
   }            
4

3 に答える 3

6

あなたはこのtypedefを持っています:

typedef struct node *listpointer;

しかし、あなたは を定義したことがありませんstruct node。ただし、匿名のstruct typedefed toの定義は次のとおりです。node

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

おそらくあなたは次のことを意味していました:

typedef struct node {
    int data;
    listpointer link;
} node;
于 2013-06-13T16:58:35.743 に答える
5

タグなしで構造体を定義し、

typedef struct node *listpointer;

typedef struct        {

int data;
listpointer link;
}  node;

そのため、struct nodealistpointerが指すはずの は不完全な型のままです。

構造体にタグを付ける必要があります。

typedef struct node { ...

次にlistpointer、完全なオブジェクト型を指します。

于 2013-06-13T16:58:04.773 に答える
0

このエラーが発生したのは、構造定義を含むヘッダー ファイルをインクルードしていなかったためです。

于 2014-02-17T23:05:12.987 に答える