1

練習用に単純な連結リストを作成し、少し記憶を呼び覚まそうとしていますが、問題が発生しました。私は C の経験がかなり浅いので、これが機能しない理由がわかりません。Node と LinkedList 構造体を定義しようとしていますが、コンパイルしようとするたびに、Node が不明な型であるというエラーが表示されます。私は何かが欠けていると確信していますが、これを理解することはできません。皆さんありがとう!

これは私のll.hファイルです

  1 #ifndef ll_h
  2 #define ll_h
  3 
  4 #include <stdio.h>
  5 
  6 typedef struct {
  7     void *data;
  8     Node *next;
  9     Node *prev;
 10 } Node;
 11 
 12 
 13 typedef struct {
 14     Node *first;
 15     Node *last;
 16     int size;
 17 } LinkedList;
 18 
 19 
 20 void *getData(LinkedList list, int index);
 21 int getSize(LinkedList list);
 22 void *deleteNode(LinkedList, int index);
 23 void add(LinkedList list, void *data);
 24 void freeList(LinkedList list);
 25 
 26 #endif           

私が受け取っているエラー

cc -Wall -g   -c -o ll.o ll.c
In file included from ll.c:3:0:
ll.h:8:5: error: unknown type name ‘Node’
ll.h:9:5: error: unknown type name ‘Node’
ll.c: In function ‘getData’:
ll.c:8:18: error: expected expression before ‘LinkedList’
ll.c:12:7: warning: assignment from incompatible pointer type [enabled by default]
ll.c: In function ‘getSize’:
ll.c:21:12: error: expected expression before ‘LinkedList’
ll.c: In function ‘deleteNode’:
ll.c:26:18: error: expected expression before ‘LinkedList’
ll.c:32:7: warning: assignment from incompatible pointer type [enabled by default]
ll.c:37:12: error: request for member ‘next’ in something not a structure or union
ll.c:38:12: warning: assignment from incompatible pointer type [enabled by default]
ll.c:40:12: error: request for member ‘next’ in something not a structure or union
ll.c: In function ‘add’:
ll.c:52:16: warning: assignment from incompatible pointer type [enabled by default]
ll.c:54:21: warning: assignment from incompatible pointer type [enabled by default]
ll.c: In function ‘freeList’:
ll.c:61:18: error: expected expression before ‘LinkedList’
ll.c:62:18: warning: initialization from incompatible pointer type [enabled by default]
ll.c:65:7: warning: assignment from incompatible pointer type [enabled by default]
ll.c:67:7: warning: assignment from incompatible pointer type [enabled by default]
ll.c:62:11: warning: variable ‘next’ set but not used [-Wunused-but-set-variable]
ll.c:60:9: warning: unused variable ‘i’ [-Wunused-variable]
ll.c: In function ‘main’:
ll.c:85:6: error: ‘LinkedList’ has no member named ‘add’
ll.c:91:10: warning: dereferencing ‘void *’ pointer [enabled by default]
ll.c:91:10: error: void value not ignored as it ought to be
ll.c: In function ‘getSize’:
ll.c:22:1: warning: control reaches end of non-void function [-Wreturn-type]
make: *** [ll.o] Error 1
4

3 に答える 3

3

これを使って:

typedef struct Node{
     void *data;
     struct Node *next; // note here
     struct Node *prev;
} Node;
于 2013-08-31T05:09:25.620 に答える