2011-02-13 1 views
0
int search(struct node **front, int val) 
{ 
    struct node *cur; 
    cur=*front; 
    while(cur!=NULL) 
    { 
     cur=cur->next; 
    } 
    return cur!=NULL; 
} 
+0

現在のノードが希望値が含まれている(ヴァルをint型)とループを破る場合、あなたがチェックするためのロジックを逃しているようだが、問題なく、リストを反復処理する必要があり、それ以外の場合はそのように思われます(あなたのノード構造がどのように見えるのかわからないので、確実に何かを言うのはかなり難しい)。 – esaj

+0

引数として 'val'を使うのは何ですか? – Mahesh

答えて

3

これは常にリストの最後まで実行され、0を返します。あなたはどこかvalと比較する必要があります。

また、*frontを決して割り当てていないので、frontstruct node **として渡す必要はありません。代わりにconst struct node *として渡してください。

あなたのコードは、それがNULL最初の引数を渡された場合、それがクラッシュし、燃焼することを除いて

int search(struct node **front, int val) 
{ 
    return 0; 
} 

に相当します。

0

変数valとの比較はどこにありますか? コードでは、値 "val"のノードがリンクリストに存在するかどうかを確認できません。

1

No.ロジックのどこにもvalを使用していません。これを試してみてください -

int search(struct node *front, int val) 
{ 
    while(front != NULL) 
    { 
     if(front->val == val) // Assuming struct node has val member which you are trying to compare to 
      return 1; // found it 

     front=front->next; 
    } 
    return 0; // Not found 
} 
+0

私は最初の引数を 'const'ポインタにします。 –

関連する問題