问题描述:
设在一个带表头结点的单链表中所有元素结点的数据值无序,试编写一个函数,删除表中所有大于最小值小于最大值的元素(若存在)。
问题解答:
因为链表是无序的,所以只能逐个结点进行检查,执行删除。
本题代码如下:
- void RangeDelete(LinkList &L, int min,int max){
- LNode *pr = L, *p=L->link; //p 是检测指针,pr 是其前驱
- while(p!=NULL)
- if (p->data>min&&p->data<max) { //寻找到被删结点,删除
- pr->link=p->link;
- free(p);
- p=pr->link;
- }else{ //否则继续寻找被删结点
- pr=p;
- p=p->link;
- }
- }