C++实现遍历链表一次求出中间的节点
2014-09-12 15:13
381 查看
//构建链表
#include"list.h"
listnode* MiddleNOdeFromEnd(listnode* head)
{
listnode* pahead=head;
listnode* pbehind=head;
if(head->next==NULL)
return NULL;
if(head->next->next==NULL)
return head->next;
while(pahead!=NULL&&pbehind!=NULL&&pbehind->next!=NULL&&pahead->next!=NULL)
{
pahead=pahead->next->next;
pbehind=pbehind->next;
}
return pbehind;
}
int main()
{
list list1;
list1.addtolist(1);
list1.addtolist(2);
/*list1.addtolist(3);
list1.addtolist(4);
list1.addtolist(5);
list1.addtolist(6);
list1.addtolist(7);
list1.addtolist(8);
list1.addtolist(9);
list1.addtolist(10);
list1.print();*/
listnode* head=list1.Head();
listnode* pmiddle=MiddleNOdeFromEnd(head);
cout<<pmiddle->data<<endl;
return 0;
}
#include"list.h"
listnode* MiddleNOdeFromEnd(listnode* head)
{
listnode* pahead=head;
listnode* pbehind=head;
if(head->next==NULL)
return NULL;
if(head->next->next==NULL)
return head->next;
while(pahead!=NULL&&pbehind!=NULL&&pbehind->next!=NULL&&pahead->next!=NULL)
{
pahead=pahead->next->next;
pbehind=pbehind->next;
}
return pbehind;
}
int main()
{
list list1;
list1.addtolist(1);
list1.addtolist(2);
/*list1.addtolist(3);
list1.addtolist(4);
list1.addtolist(5);
list1.addtolist(6);
list1.addtolist(7);
list1.addtolist(8);
list1.addtolist(9);
list1.addtolist(10);
list1.print();*/
listnode* head=list1.Head();
listnode* pmiddle=MiddleNOdeFromEnd(head);
cout<<pmiddle->data<<endl;
return 0;
}
相关文章推荐
- 单链表 --- 查找链表中间节点,仅一次遍历
- C语言:【单链表】查找单链表的中间节点,要求只能遍历一次
- C/C++面试之算法系列--一次遍历找链表倒数第n个节点
- 【数据结构】给出一个链表,遍历一次就找到中间节点
- 查找单链表的中间节点,要求只能遍历一次链表(C语言)
- 算法与数据结构面试题(11)-一次遍历得到链表的中间节点
- 只遍历一次单链表,确定单链表中间节点的位置
- 【数据结构】单链表—求链表中间节点(只遍历一次链表)— 快慢指针
- 删除单链表的头元素;单链表,只是遍历一次,求出中间节点
- 一次遍历单向链表找到中间节点
- 查找单链表的中间节点,要求只能遍历一次链表
- 查找单链表的中间节点,要求只能遍历一次链表
- 查找单链表的中间节点,要求只能遍历一次链表
- C实现简单单向链表,一次遍历查找倒数第k个节点的值
- 左神的书——《程序员代码面试指南》之删除链表的中间节点或a/b节点 c++实现
- 程序员面试题精选(35):一次遍历链表求中间节点位置
- 只遍历一次单链表,确定单链表中间节点的位置
- C语言:【单链表】查找单链表的中间节点,要求只能遍历一次
- 只遍历一次单链表找出中间节点的算法
- 链表3 ----- 一次遍历找到中间节点