2014-02-08 2 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; 
}; 

ли декларация ElementType в Struct Node является действительным или нет. если да, то как?

+2

Этот код компилируется без ошибок? – drolando

+1

Где находится 'ElementType'? –

ответ

1

Все прототипы в type.h использовать только указатель на struct Node не сама структура. Поэтому нет необходимости, чтобы тип Node был завершен, когда вы включаете файл type.h.

Но вы должны определить все элементы с типами элементов, прежде чем использование или реализации и функции, которые были decleared в type.h. Для использования функции вам необходимо создать объекты, невозможные с неполными типами. Реализация, как правило, разыгрывает указатель, что также невозможно с неполными типами.

Поэтому перед использованием любого экземпляра struct Node вы должны определить typedef ElementType.

+0

Отчасти я понял, спасибо. – ajkumar25

Смежные вопросы