单链表 --- 查找链表中间节点,仅一次遍历
方法:快慢指针法
#include<string.h> #include<malloc.h> #include<assert.h> typedef int DataType; typedef struct ListNode { struct ListNode *_next; DataType _data; }ListNode; void PrintList(ListNode *&pHead) { while(pHead) { printf("%d->",pHead->_data); pHead=pHead->_next; } printf("NULL\n"); } void FindMid(ListNode *&pHead) //查找链表中间节点,仅一次遍历 { ListNode *slow=pHead; ListNode *fast=pHead; while (fast&&fast->_next&&fast->_next->_next) { fast = fast->_next->_next; slow = slow->_next; } printf("链表中间节点:%d\n",slow->_data); }
本文出自 “花开彼岸” 博客,请务必保留此出处http://zxtong.blog.51cto.com/10697148/1757672
原文:http://zxtong.blog.51cto.com/10697148/1757672