2010-08-28 4 views
1

Я новичок в Linux с программированием и у меня есть простая программа только для обучения и, когда я скомпилировать это дает мне ошибку «разыменования указателя на неполную типа» вот мой кодПроблема с указателями

struct Node 
{ 
    struct Node* left; 
    struct Node* middle; 
    struct Node* right; 
    int nodeData; 
    int nodeLevel; 
    char isVisted; 
}; 
struct ListNode 
{ 
    struct Node* data; 
    struct ListNode* next; 
}; 

struct List 
{ 
    struct NodeList* head; 
    struct NodeList* tail; 
    int count; 
}; 

typedef struct ListNode ListNode; 
typedef struct Node Node; 
typedef struct List List; 

ListNode* InitListNode(Node* data) 
{ 
    ListNode* listNode=(ListNode*)calloc(1,sizeof(ListNode)); 
    listNode->data=data; 
    listNode->next=NULL; 
    return listNode; 
} 

List* InitList() 
{ 
    List* list=(List*)calloc(1,sizeof(List)); 
    list->count=0; 
    list->head=list->tail=NULL; 
} 

void EnQue(Node* data,List* que) 
{ 
    if(que->count==0) 
    { 
     que->tail=que->head=InitListNode(data); 
     que->count++; 
    } 
    else 
    { 
     que->tail->next=InitListNode(data); //here error is problem comes 
     que->tail=que->tail->next;//here error is problem comes 
     que->count++; 
    } 
} 

пожалуйста help ..

+1

В какой строке отображается эта ошибка? –

+1

В структуре List, где объявлен тип NodeList? Вы разыскиваете переменные этого типа позже. – vanza

+1

'' ListNode * listNode = (ListNode *) calloc (1, sizeof (ListNode)); 'плохое кодирование. Его не _wrong_ или что-то, просто плохо C. Используйте ListNode listNode = malloc (sizeof (ListNode)); 'и не забудьте проверить, что' listNode! = NULL'. – alternative

ответ

6

head and tail в структуре Список имеют тип NodeList. Должен быть ListNode?

+0

thanx много решений работает .. но одна вещь, почему компилятор не указывайте, что NodeList не существует, так как я не создал эту структуру. –

+0

NodeList существует, но только как неполный тип. В вашем случае это означает «структура, члены которой еще не определены» . И это именно то, что сказал вам компилятор. – RWS

+0

thanx для вашего ответа –

2

похоже, есть типография в вашем определении List. Я считаю, что это должно быть ListNode, которое определено, а не NodeList, которое не определено. Попробуйте следующее:

struct List 
{ 
    struct ListNode* head; 
    struct ListNode* tail; 
    int count; 
}; 
+0

thanx для вашего ответа bro –

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