2016-07-13 4 views
-1

コードヘッドを返さない:コンパイル後がどのように構造体から、私は頭を返すようにしようとした

node insert(node *head, int num){ 
    node *newnode; 
    newnode=getnode(); 
    newnode->data=num; 
    nednode->next=NULL; 

    if(head==NULL){ 
    head=newnode; 
    newnode->next = NULL; 
    } 
    head->next=newnode; 
    return head; 
} 

を、私はこのエラーを取得しています:

"error: expected declaration specifiers or '...' before '*' token"

事前に感謝

+2

完全なコードフラグメントではなく、引数の型が指定されていません。 – evaitl

+3

おそらく、コンパイラに 'node'の宣言がありません。 –

+0

また、タイプミスがあります: 'nednode-> next = NULL;を' newnode-> next = NULL;に変更します。 – Cherubim

答えて

1

あなたの機能プロトタイプが不完全なようです:

node insert(*head,num) 

する必要があります:

+0

データ型を書くのを忘れました。上記のコードを実行しても同じエラーが発生します。 – Raghu

1

返される値はおそらくノード*である必要があります。したがって、node * insert(node * head、int num)でなければなりません。

また、newnodeの入力ミスがあります。私はそれを試して戻り値を変更した後は私のために働いた。

0

あなたはこのようにする必要があります。

nednodeをnewnodeに変更します。

ノードをリンクに接続するときは、リンクの末尾を見つけて新しいノードを末尾に接続する必要があります。

ノードの代わりにノード*を返す必要があります。したがって、funcの戻り値の型をnode *に変更してください。

node* insert(node *head, int num){ 
    node *newnode; 
    newnode=getnode(); 

    newnode->data=num; 
    newnode->next=NULL; 

    if(head==NULL){ 
    head=newnode; 
    } else { 
    node *p = head; 
    while(p) { 
     p = p->next; 
    } 
    p->next=newnode; 
    } 
    return head; 
} 
関連する問題