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

原创 2016年06月01日 10:40:59

思路:

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

创建节点模型:

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;
}


版权声明:本文为博主原创文章,转载需标明出处。

给一个单链表,不知道结点N的值,怎样只遍历一次就可以求出中间结点,写出算法

void searchmid(node* head,node *mid){ node *temp=head; while(head->next->next !=NULL){ head=head->ne...
  • howlaa
  • howlaa
  • 2011年12月14日 18:00
  • 668

【算法题】一次遍历单向链表找到中间节点

在阅读的过程中有任何问题,欢迎一起交流 邮箱:1494713801@qq.com    QQ:1494713801 具体方法和思想: 1)设置2个指针,一个走2步时,另一个走1步; 2)...

查找单链表的倒数第k个节点,要求只能遍历一次链表

为了得到倒数第k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步。可是输入的是单向链表,只有从前往后的指针而没有从后往前的指针。因此我们需要打开我们的思路。既然不能从尾结点开始遍历这个链表,我...

查找单链表的中间节点

  • 2011年05月17日 16:44
  • 2KB
  • 下载

有关单链表的两个问题【遍历一次求中间节点,倒数第K个结点】

package com.zhiru; /* * 一个无附加头结点的单向链表示例 */ public class LinkedList { private Node head; private...

单链表的创建,表长,插入,查找,逆置,中间元素,删除节点,打印

直接上代码。。。 #include #include using namespace std; struct Node { int data; Node *next; }; /*  type...

编写程序,要求通过一次遍历找到单链表中倒数第 n 个节点

单链表的建立和遍历,比较适合才开始学数据结构的人

C 带头节点的单链表查找中间节点

//自定义的结点结构体和头指针结构体: [cpp] view plain copy   #include   #include   #...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:查找单链表的中间节点,要求只能遍历一次链表
举报原因:
原因补充:

(最多只允许输入30个字)