阅读以下说明和C函数,将应填入 (n) 处的语句或语句成分写在答题纸的对应栏内。
【说明】
已知单链表L含有头结点,且结点中的元素值以递增的方式排列。下面的函数DeleteList在L中查找所有值大于minK且小于maxK的元素,若找到,则逐个删除,同时释放被删结点的空间。若链表中不存在满足条件的元素,则返回-1,否则返回0。
例如,某单链表如图4-1所示。若令minK为20、maxK为50,则删除后的链表如图4-2所示。
图4-1
图4-2
链表结点类型定义如下:
typedef struct Node{
int data;
struct Node *next;
}Node, *LinkList;
【C函数】
int DeleteList (LinkList L, int minK, int maxK)
{ /*在含头结点的单链表L中删除大于minK且小于maxK的元素*/
(1) *q = L, *p = L->next; /*p指向第一个元素节点*/
int delTag = 0;
while ( p )
if ( p->data <= minK )
{ q = p; p = (2) ; }
else
if ( p->data < maxK ) { /*找到删除满足条件的节点*/
q->next = (3) ; free(p);
p = (4) ; delTag = 1;
}
else break;
if ( (5) ) return -1;
return 0;
}