我正在学习C,我不清楚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;
};
ElementType
中Struct Node
的声明是否有效。如果有,怎么样?
答案 0 :(得分:1)
type.h 中的所有原型只使用指向struct Node
的指针而不是结构本身。因此,当您包含文件type.h时,类型Node不必完整。
但是,您必须先使用使用或实现以及已在类型中删除的函数,使用元素类型定义所有元素。 ħ即可。对于函数的使用,您需要实例化对象,不完整类型是不可能的。实现通常会取消引用指针,对于不完整类型,这也是不可能的。
因此,在使用ElementType
的任何实例之前,您必须先定义typedef struct Node
。