0

昇順で並べ替えられたリンクリストの適切な場所に(順番に)ノードを挿入しようとしています。GCCエラー「エラー:不完全な型へのポインターの逆参照」が発生し続けます。私はこのstackoverflowの投稿のコードを処理してきました。以下は私のコードです:

typedef struct sNode  {         
   int sid;
   struct sNode *next;
 }sNode;

sNode* addsNode (struct sNode *headPtr, int pSid)    
{             
      struct sNode *ptr, *root = headPtr;          
      ptr = malloc (sizeof(struct sNode));         

      if(headPtr == NULL){ //In other code I've already check for a NULL list, pointer                        
             ptr->sid = pSid;
      }
      else{                 
           while(headPtr->next != NULL && headPtr->next->sid < pSid){                 
           //while(headPtr->next != NULL){   --> Compiles when uncommented

           headPtr = headPtr->next;                 
           }//while                 
           ptr->sid = pSid;   

      }//else

 return root;
}//addsNode

リストの先頭へのポインタを返そうとしているので、返されたときに他のリンクリスト操作が発生する可能性があります。StackOverflowについて調査を行っていますが、問題の原因となっているstructsNodeを参照しているようです。typedefを使用して構造体を宣言することに関するさまざまな投稿を見てきました。だから私はそれを宣言するためにtypedefを使用して、または使用せずにそれを試しました。#include&を提案する投稿も見ましたが、それもうまくいきませんでした。私はGCC4.6.3を使用しています。助けていただければ幸いです。

4

1 に答える 1

2
typedef struct sNode  {         
   int sid;
   struct sNode *next;
 };

あなたはtypedefいくつかの名前に構造体をしなければなりません、

typedef struct sNode  {         
   int sid;
   struct sNode *next;
 } sNode;

例えば。structtypedefする名前がないと、とにかく無効になり、キーワードでタイプを参照する必要があります。

于 2012-09-27T17:59:40.413 に答える