ポインタエラーになってしまいます。どうすればいいでしょうか?
あくまで勉強なのでnewは使っていません。
#include <stdio.h> #include <malloc.h> typedef struct cell_t { struct cell_t *next; int data; }; cell_t *g_cell;//セルの先頭 int setList(int data) { cell_t *tmp; tmp = (cell_t*)malloc(sizeof(cell_t)); if(tmp == NULL) { return(-1); } tmp->next =NULL; if(g_cell==NULL)//先頭が存在しないなら g_cell=tmp;//先頭にする else { cell_t *end_cell=g_cell;//NULLになる cell_t *now_end_cell=NULL;//最後の要素 while(end_cell!=NULL){ now_end_cell=end_cell; end_cell=end_cell->next; } now_end_cell->next=tmp;//一番最後のリストに新しい要素のポインタをつなぐ。 } tmp->data = data; return 0; } void show_rist(){ cell_t *p=g_cell; while(p!=NULL){ printf("ptr=%p,data=%d\n",p,p->data); p=p->next; } } void deleteList() { cell_t *now=g_cell;//削除されるポインタ cell_t *back=NULL;//削除されるポインタの後ろ while(now!=NULL){ if(now->data%10==0){ if(back==NULL){//最初に引っかかったら g_cell=now->next; } else { back->next=now->next; free(now); } } else back=now; now=now->next; } } int main() { g_cell= NULL;//先頭のセルの初期化 for(int i=0;i<100+1;i++) setList(i); deleteList(); show_rist(); return 0; }