您的位置:首页 > 编程语言 > C语言/C++

面试题三 C/C++面试秘笈 查找单链表的中间元素 --程序员面试题

2016-02-25 15:36 363 查看
/**
*面试题 8
*查找单链表的中间元素
*这里使用一个只扫描一遍的方法,假设mid指向当前已经扫面的当前的中间元素,cur指向当前链表已扫描的末节点,
*那么继续扫面即移动cur到cur->next,这时只需判断一下应不应该移动mid到mid->next就行了。
*所以一遍扫面就能找到中间位置
*/

node * search_middle(node * head)
{
int i=0,j=0;
node *current=NULL,*middle=NULL;
current = middle = head->next;//开始都在第一个节点
while (current !=NULL) {
if(( i /2) > j){//如果当前的位置除2大于j的位置,那么才移动mid到下一个节点
j++;
middle = middle->next;//指向下一个节点
}
i++;//每次i都自加一次
current = current->next;//下一个节点
}

return middle;

}

//主函数

int main(int argc,const
char * argv[]) {
node *head =create();//创建单链表
node *current;
cout<<"search middle the node:"<<endl;
current = search_middle(head);
cout<<current->data<<endl;

return 0;
}

如果有任何问题,欢迎下方留言谈论,或者加入QQ群83459374交流
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: