您的位置:首页 > 其它

查找单链表的中间节点,要求只能遍历一次链表

2016-06-01 10:40 423 查看
思路:

由于只能遍历一次单链表,所以我就可以创建两个指针,第一个指针每次直走一步,第二个指针每次走两步。这样能在第二个指针指向尾的时候,第一个指针就指向了中间的节点了

创建节点模型:

typedef int DataType;
typedef struct strNode
{
struct strNode* pNext;
DataType data;
}Node;

typedef struct strNode* PNode;
找中间节点


PNode FindMidNode(PNode pHead)
{
PNode slow = NULL;
PNode fast = NULL;
assert(NULL != pHead);
if (NULL == pHead->pNext)
{
return NULL;
}
slow = pHead;
fast = pHead;
while (fast ->pNext!= NULL)
{
fast = fast->pNext->pNext;
slow = slow->pNext;
}
return slow;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: