線形探索

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yuuma

線形探索

#1

投稿記事 by yuuma » 14年前

こんにちは。
学校の課題について質問させていただきます。
プログラムをつくる過程で整数値データが格納された連結リストにおいて、目的の値を線形探索する関数を作ってるのですが、for文の()内がわからなくて困ってます。
配列とかと違って構造体に添字がないのでよくわからないです。
ご教授お願いします。

コード:

typedef struct  LinkedListNode{
   
  int data;
  struct LinkedListNode *next;
} LinkedListNode;

typedef struct LinkedList{
  
  int node_num;
  struct LinkedListNode *head;
} LinkedList;

LinkedList *LinkedListSearch(LinkedList *list, int x)
{
      
   LinkedListNode *pNode;
     for()
     {
       if(pNode->data == x )
       return pNode;
     }

     return (NULL);
}
ちなみにこの関数の引数は連結リストへのポインタ、探す値で存在すればその値があるノードのポインタを返して、なければNULLを返すものとしてます。
あの構造体LinkedListNodeのメンバはデータ値と次のノードへのポインタ、LinkedListはノード総数と先頭ノードへのポインタです。

アバター
さかまき
記事: 92
登録日時: 14年前

Re: 線形探索

#2

投稿記事 by さかまき » 14年前

ノード総数がわかっているので、先頭ノードからノード総数分ポインタを進めて探していけばよいです。

他の掲示板でも他の人が同じ問題を相談されていますが
やはり同じ所(LinkedListSearch内のforループの所)で
困っておられました。
そっちでは、データを追加するLinkedListDataAddなどのややこしい処理は
出来ているんですが、LinkedListSearchはおわかりにならなかった様です。
LinkedListDataAddに比べてLinkedListSearchってそんなに難しいんですかね?

ちなみにそちらについた解答例ではノード総数は使わない方法で解決しています。

non
記事: 1097
登録日時: 14年前

Re: 線形探索

#3

投稿記事 by non » 14年前

for(pNode=list->head;pNode!=NULL;pNode=pNode->next)

こんな感じで、ノードを進めていき、検索します。
non

yuuma

Re: 線形探索

#4

投稿記事 by yuuma » 14年前

ありがとうございます。
解決しました。

閉鎖

“C言語何でも質問掲示板” へ戻る