Dec 18, 2008

答华为笔试的最后一道题

好久以前曾经笔了次华为的C/C++
前边做得都不错,最后一道题由于时间不够没做出来(60min)
题目是:一张单链表,只允许你遍历一次,要求找出其中间节点的位置

今天突然有了想法:
定义两个指针*pa与*pb,中间结点指针*pMid==NULL
pa=pb=head;
while(1)
{
pa=pa->next;
if(pb->next!=NULL)
{
pb=pb->next;
if(pb->nex!=NULL)
pb=pb->next;
else
{
//偶数节点链表无中间节点
cout<<"无中间节点";
break;
}
}
else
{
pMid=pa;
break;
}
}
这样子的话输出pa指针指向的当前节点,就是中间节点的位置了

啊啊啊。我真是太瓜了当时怎么不聪明一下呢
用两个指针就搞定了嘛

No comments:

Powered By Blogger