ポインタエラーになってしまいます。どうすればいいでしょうか?
あくまで勉強なので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;
}