本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:
struct ListNode {
int data;
ListNode *next;
};
函数接口定义:
struct ListNode *readlist();
struct ListNode *deletem( struct ListNode *L, int m );
代码如下:
struct ListNode *readlist()
{
struct ListNode *head,*p1,*p2;
int n=0;
head = NULL;
p1 = p2 = (struct ListNode*)malloc(sizeof(struct ListNode));
scanf("%d",&p1->data);
while(p1->data!=-1)
{
n++;
if(n==1)
head = p1;
else
p2->next = p1;
p2 = p1;
p1 = (struct ListNode*)malloc(sizeof(struct ListNode));
scanf("%d",&p1->data);
}
p2->next = NULL;
return head;
}
struct ListNode *deletem( struct ListNode *L, int m )
{
struct ListNode *p1,*p2;
p1 = L;
while(p1!=NULL)
{
if(p1->data==m)
{
if(p1==L)
L = p1->next;
else
p2->next = p1->next;
}
else
{
p2 = p1;
}
p1 = p1->next;
}
return L;
}
通过~