您的位置:首页 > 其它

查找链表中的中间节点

2014-09-01 10:56 309 查看
题目:输入一个单链表,打印出链表的中间元素,注意时间效率。

算法思想:用快慢指针,设置两个指针fast和slow,两个指针同时开始从头遍历,fast指针每次的步长为2,slow的步长为1,这样,当fast指针遍历到链表末端,slow指针刚好指向链表的中间位置。

代码:

typedef struct node

{

int value;

struct node* next;

}node_t;

node_t* getTheMiddleNode(node_t* head)

{

if(head == NULL)

return NULL;

node_t* fast_ptr = head;

node_t* slow_ptr = head;

while((slow_ptr != NULL) && (fast_ptr != NULL) && (fast_ptr->next != NULL))

{

slow_ptr = slow_ptr->next;

fast_ptr = fast_ptr->next->next;

}

return slow_ptr;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: