题样

struct ListNode *readlist()
{
struct ListNode * head=NULL;
struct ListNode * p=NULL;
struct ListNode * p2=NULL;
while(1)
{
p=(struct ListNode *)malloc(sizeof(struct ListNode ));
scanf("%d",&p->data);
if(p->data==-1)break;
else
{
if(head==NULL)
{
head=p;
p2=p;
}
else
{
p2->next=p;
p2=p;
}
}
p2->next=NULL;
}
return head;
}
struct ListNode* del_link(struct ListNode* head,int m)
{
struct ListNode*p=head;
struct ListNode*p2=NULL;
if(head->data==m)
{
head=head->next;
p->next=NULL;
free(p);
}
else
{
p2=head;
while(p&&p->data!=m)
{
p2=p;
p=p->next;
}
if(p==NULL)return head;
else
{
p2->next=p->next