问题描述:
设在一个带表头结点的单链表中所有元素结点的数据值无序,试编写一个函数,删除表中所有大于最小值小于最大值的元素(若存在)。
问题解答:
因为链表是无序的,所以只能逐个结点进行检查,执行删除。
本题代码如下:
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;
}
}