2014-02-08 27 views
0

我正在學習C,我不清楚typedef。我正在創建一個鏈接列表。Typedef用法不明確

type.h

#ifndef 

struct Node; 
typedef struct Node *PtrToNode; 
typedef PtrToNode List; 
typedef PtrToNode Position; 

List MakeEmpty(List L); 
int IsEmpty(List L); 
int Islast(Position P, List L); 
Position Find(ElementType X, List L); 
void delete(ElementType X, List L); 
Position FindPrevious(ElementType X, List L); 
void Insert(ElementType X, List L, Position P); 
ElementType Retrieve(Position P); 
#endif 

我有一個疑問ElementType不與typedef創建,但我們如何使用此聲明。

type.c

#include<stdio.h> 
#include "type.h" 

struct Node 
{ 
    ElementType Element; 
    Position Next; 
}; 

ElementTypeStruct Node聲明是否有效。如果是,如何?

+2

此代碼編譯沒有錯誤? – drolando

+1

定義了什麼'ElementType'? –

回答

1

type.h只使用一個指向所有原型struct Node不是結構本身。因此,當包含文件type.h時,類型節點沒有必要完整。

但是你之前,你可以使用實施已在type.h被decleared函數的定義與類型元素的所有元素。爲了使用該功能,您需要實例化對象,對於不完整的類型,這是不可能的。實現通常會取消引用指針,但不完整的類型也是不可能的。

因此,在使用struct Node的任何實例之前,您必須定義typedef ElementType

+0

有點我明白了,謝謝。 – ajkumar25