#include <stdio.h>

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;
 }