本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。
:
struct ListNode *readlist()
{
struct ListNode * phead = NULL, * p;
int val;
scanf("%d", &val);
while(val != -1)
{
struct ListNode * pnew = (struct ListNode *)malloc(sizeof(struct ListNode));
if(pnew == NULL)
exit(-1); // pnew 新结点是否建立好,出现异常,则exit(-1)退出;
pnew->data = val;
pnew->next = NULL;
if(phead == NULL)
phead = pnew;
else
p->next = pnew;
p = pnew;
scanf("%d", &val);
}
return phead;
}
struct ListNode *deletem( struct ListNode *L, int m )
{
struct ListNode * phead = NULL, *p;
while(L != NULL)
{
if(L->data != m)
{
struct ListNode * pnew = (struct ListNode *)malloc(sizeof(struct ListNode));
if(pnew == NULL)
exit(-1);
pnew->data = L->data ;
pnew->next = NULL;
if(phead == NULL)
phead = pnew;
else
p->next = pnew;
p = pnew;
}
// else ;
L = L->next ;
}
return phead;
}