应用题
42.在单链表中,每个结点含有5个正整型的数据元素(若最后一个结点的数据元素不满5个,以值0充),试编写一算法查找值为n(n>0)的数据元素所在的结点指针以及在该结点中的序号,若链表中不存在该数据元素则返回空指针。
【正确答案】这是一个在单链表中查找结点,在结点内查找给定值的过程,先定义存储结构。
typedef struet node{
int A[m]; //每个结点内含有m个正整数,本例中m为5
struet node * next: //指向下一结点的指针
}LNode,* LinkList;
typedef struet{
int j: //正整数在结点内的序号
struet node * s: //结点的指针
}rcd;
rcd * LSearch(LinkList head,int n){
//在链表中查找正整数n,若查找成功,返回该结点指针及n在结点中的序号,
//否则返回空指针表示失败。
rcd * R:
P=head一>next: //假定链表带头结点,P指向链表第一元素结点
int found=0:
Int i;
while(P&&!found){
for(i=0;i<m;i++)
if(P->A[i]==n)found=1 //查找成功
P=P->next; //下一结点
}
if(P==null)return(null);
else{R.j=i;R.s=P;return(R);}
}
【答案解析】