以下のコードは双方向リストを用いて入力された値を順番に格納するプログラムです。
このコードを実行すると入力はできるのですが-10000を入力してもforから抜けられません。原因は何でしょうか?

他にもミスがあれば指摘お願いします。

#include <stdio.h >
#include < stdlib.h >

struct data_t{
  int num;
  struct data_t *next, *prev;
};

void insert(struct data_t *p, struct data_t *w){
    (p->prev)->next=w;
    w->prev=p->prev;
    p->prev=w;
    w->next=p;
}

void printall(struct data_t *p){
  struct data_t *a;
  a=p;
  for(;p!=a;){
  printf("p:%p, bp:%p, fp:%p, data:%d\n", p, p->prev, p->next, *p);
  p=p->prev;
  }
}

int main(){
  struct data_t *p=NULL, *w=NULL, *head=NULL;
  int d, count;
  head=(struct data_t *)malloc(sizeof(struct data_t));
  p=(struct data_t *)malloc(sizeof(struct data_t));
  w=(struct data_t *)malloc(sizeof(struct data_t));
  p->prev=head;
  p->next=head;
  head->next=p;
  head->prev=p;
  for(count=1;scanf("%d", &d)!=-10000;count++){
    if(count==1){
      p->num=d;
    }else{
      w->num=d;
      insert(p, w);
      p=p->next;
      printf("a");
    }
  }
  p=head->prev;
  printall(p);
  return 0;
}