宜しくお願いします。
今勉強している双方向循環リストで困ったことが起きましたので、ご教授願います。
作っているプログラムでの構造体の中身は
・次データへのポインタ
・前データへのポインタ
・この構造体のステータス
の3つです。
ステータスは、リスト構造を始めから終わりまでループしたときの終了条件に使っています。
以下コードは頭から最後までをループで参照するプログラムなんですが、
ループ中にあるif内の実行文が実行されてない…と思われます。(37~47行目)
ifの条件式が間違っているのでしょうか。
他の何かが原因なのでしょうか?
宜しくお願いします。
typedef struct linkedlist{
struct linkedlist *NEXT_ptr;
struct linkedlist *PREVIEW_ptr;
struct linkedlist *STATUS;
}list_t;
int main(void){
list_t DUMMY;
list_t *HEAD;
list_t *END; ///mallocによる動的確保のコードは省略しました。
HEAD->NEXT_ptr = END;
HEAD->PREVIEW_ptr = END;
HEAD->STATUS = &DUMMY;
///リスト構造をHEADとENDでつくりました。
END->NEXT_ptr = HEAD;
END->PREVIEW_ptr = HEAD;
END->STATUS = NULL; ///ループの終了条件につかいます。
while(HEAD->STATUS != NULL)
{
int COUNT = 0;
printf("%d\n",COUNT++); ///ここまでは実行されます。
if(HEAD->STATUS == &DUMMY)
{
printf("SUCCESS-DUMMY\n"); ///実行されない
break; ///実行されない
}
else if(HEAD->STATUS == NULL)
{
puts("SUCCESS-NULL"); ///実行されない
printf("%d\n",COUNT); ///実行されない
}
HEAD = HEAD->NEXT_ptr;
}
free(HEAD);
free(END);
return 0;
}
0
1
環境
OS: Ubuntu 11.04
コンパイラ: GCC 4.7
以上です。
宜しくお願い致します。