【题目】试写一算法,删除带头结点单链表中所有值
为x的元素,并释放被删结点空间。
单链表类型定义如下:
typedef struct LNode {
ElemType data;
struct LNode *next;
} LNode, *LinkList;
**********/
Status DeleteX_L(LinkList L, ElemType x)
/* 删除带头结点单链表L中所有值为x的元素, */
/* 并释放被删结点空间,返回实际删除的元素个数。*/
算法实现:
- {
- LNode *q,*p;
- 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;
- }