【题目】试写一算法,删除带头结点单链表中所有值
小于x的元素,并释放被删结点空间。
单链表类型定义如下:
typedef struct LNode {
ElemType data;
struct LNode *next;
} LNode, *LinkList;
**********/
Status DeleteSome_L(LinkList L, ElemType x)
/* 删除带头结点单链表L中所有值小于x的元素, */
/* 并释放被删结点空间,返回实际删除的元素个数。*/
实现算法:
- {
- //LNode *q,*p;
- LNode *q=L;
- LNode *p=L->next;
- int number=0;
- if(L==NULL) return 0;
- //p=q=L;
- while(p)
- {
- if(p->data<x)
- {
- p=p->next;
- free(q->next);
- number++;
- q->next=p;
- }//if end
- else
- {
- q=p;
- p=p->next;
- }
- } //while end
- return number;
- }