阅读下列函数并回答问题。
typedefstructnode{
DataTypedata;
structnode木next;
}LinkNode;
TypedefLinkNode*Linklist;
voidDeleX(Linklisthead,DataTypex)
{
LinkNode*P,*q,*s;
P=head;q=P-->next;
while(q!=NULL)
if(q一>data==x){
s=q;q=q一>next;
free(s);p一>next=q;
}
else{
P=q;q=q一>next;
}
}
(1)执行该函数后,单链表head中data值为x的结点数是多少?
(2)该函数的功能是什么?
(1)0个 (2)该函数的功能是删除单链表中值为x的节点。 解析:在DeleX()函数中通过while循环,依次遍历单链表head,q指向当前比较的节点,p指向当前节点的前一个节点,在判断的过程中,如果当前节点q指向的节点data值等于x则首先将q后移,然后删除该节点(p>next=q);如果不相等,则将p,q分别后移一个节点。