2016-12-13 8 views
0

まず、申し訳ありませんが、私は他の答えに従おうとしましたが、これを動作させることはできません。リストへのポインタを関数に渡す

私はCでマージソートプログラムを書いていますが、私はリンクリストへの2つのポインタを取り、その中から新しいマージされたリンクリストを作成し、新しいリストを返します。

私はたくさんのバリエーションを試しましたが、コンパイルすることはできません。

NODE* splitList(NODE *ptr) 
    { 
     NODE *startPtr = NULL; 
     NODE *endPtr = NULL; 
     NODE *temp = NULL; 
     NODE *temp2 = NULL; 

     //fill in startPtr and endPtr with nodes 

     } 
     return merge(startPtr,endPtr); //<-- passing startPtr and endPtr 

    } 

これは私があまりにもポインタを渡しています関数のヘッダである:ここで

typedef struct node 
    { 
     int val; 
     struct node *next; 
    } NODE; 

値を渡す機能さ: これは、ノード構造体の定義は、

NODE * merge(NODE **start, NODE **end) 

コンパイラから取得したエラーは次のとおりです。

"Conf私が間違っている場所を教えてもらえますか? '&'と*の組み合わせがわかっていて、私はたくさんの組み合わせを試してみました。私は基本的な行動を把握しているとは思わないので、誰かがそれを説明するのを助けることができれば素晴らしいだろう。

+1

merge(&startPtr、&endPtr) – OldProgrammer

+0

私はこれを試みましたが、同じエラーが表示されます。 –

+0

問題がネットビーンズなのか疑問に思っています!しかし、私は問題がおそらく私だと思う:-) –

答えて

0
merge(&startPtr,&endPtr) 

これは問題を解決します。あなたのコードをテキストエディタで書いてコンパイルしました。それは問題なくコンパイルされました。マージはプロトタイプが見つかる前に呼び出されている可能性があります。または、関数を最初に定義している場合、おそらくあなたはmergeの前にsplitListを書いています。 splitListはマージ関数を見つけることができません。

+0

@helptakerに感謝しています。誰かが、それを呼び出す関数の前にマージを動かすことについて先にコメントしました。 merge(&startPtr、&endPtr) をマージして機能を動かしています。 –

+0

その瞬間に入力していたので、私の答えを受け入れてくれてありがとう –

関連する問題