mae=list;
saki=mae->next;
for(;;){
  if(saki->ban >= w){        //間に挿入
    ・・・
  }
  else if(saki->next == NULL){  //最後尾に挿入
    ・・・
  }
  mae= saki;
  saki= saki->next;
}

データが一つしか入ってない場合は、saki->next(list->next->next)は不定値なので
NULLの条件にも引っかからずに永遠ループに入る可能性がありますよ。
(saki->ban>=w これに引っかかれば抜けると思うが)