free问题
欧阳春晖 2012-04-22 01:58:10 #include<stdio.h>
#include<stdlib.h>
typedef struct abc
{
int key;
struct abc *next,*iiii;
}
aaaa;
void pop(aaaa **data,int key);
void ppp(aaaa **data,int key);
void ffff(aaaa **data,int ley,int key);
void del(aaaa **data,int key);
int
main(void)
{
aaaa *data=NULL;
pop(&data,5);
ppp(&data,6);
ffff(&data,6,2);
del(&data,2);
return 0;
}
void
pop(aaaa **data,int key)
{
aaaa *iioi;
if(*data==NULL)
{
*data=(aaaa *)malloc(sizeof(aaaa));
(*data)->key=key;
(*data)->next=NULL;
(*data)->iiii=NULL;
}
else
{
iioi=(aaaa *)malloc(sizeof(iioi));
iioi->key=key;
iioi->iiii=NULL;
iioi->next=*data;
(*data)->iiii=iioi;
}
}
void ppp(aaaa **data,int key)
{
aaaa *iioi=NULL,*oooo=NULL;
iioi=*data;
while(iioi->next!=NULL)
{
iioi=iioi->next;
}
oooo=(aaaa *)malloc(sizeof(iioi));
oooo->key=key;
oooo->next=NULL;
oooo->iiii=iioi;
iioi->next=oooo;
}
void ffff(aaaa **data,int ley,int key)
{
aaaa *iioi=NULL,*oooo=NULL;
iioi=*data;
while(iioi->next!=NULL&&iioi->key!=ley)
{
iioi=iioi->next;
}
oooo=(aaaa *)malloc(sizeof(iioi));
oooo->key=key;
oooo->next=iioi;
iioi->iiii->next=oooo;
oooo->iiii=iioi->iiii;
iioi->iiii=oooo;
}
void del(aaaa **data,int key)
{
aaaa *iioi=NULL,*oooo=NULL,*tttt=NULL;
iioi=*data;
while(iioi->next!=NULL&&iioi->key!=key)
{
iioi=iioi->next;
}
oooo=iioi;
tttt=iioi->iiii;
tttt->next=oooo->next;
oooo->next->iiii=tttt;
free(oooo);//运行到这会出现异常
}