【题目】试写一算法,删除带头结点单链表中所有值小干x的元素,并释放被删结点空间。单链表类型定义如下∶
typedef struct LNode{
ElemType data;
struct LNode *next;
} LNode,*LinkList;
实现下列函数∶
Status DeleteSome_L(LinkList L,ElemType x);
/* 删除带头结点单链表L中所有值小干x的元素,
/* 并释放被测结点空间,返回实际删除的元素个数。*/
#include "allinclude.h" //DO NOT edit this line
Status DeleteSome_L(LinkList L, ElemType x)
{ // Add your code here
LNode* t;
LNode* p;
int i;
if(L->next==NULL)return ERROR;
t=L;
while (t->next!=NULL)
{
while(t->next->data<x)
{
i++;
p=t->next; //让p为要删除的结点 ,其中t为要删除的结点的上一结点
t->next=t->next->next;
free(p); //这行与上面三行为删除操作
if(t->next==NULL)break;//防止越界
}
if(t->next==NULL)break;//防止越界
t=t->next;
}
return i;
}