查找链表中间节点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找链表中间节点相关的知识,希望对你有一定的参考价值。
我们可以弄两个指针都指向头节点,然后一个指针每次走一步,另一个每次走两步。
#include<stdio.h>
typedef struct link
{
int a;
struct link *next;
}link_t;
void main()
{
link_t A = {1,NULL};
link_t B = {2,NULL};
link_t C = {3,NULL};
link_t D = {4,NULL};
link_t E = {5,NULL};
A.next = &B;
B.next = &C;
C.next = &D;
D.next = &E;
link_t *h = &A;
while(h != NULL)
{
printf(" %d",h -> a);
h = h -> next;
}
puts("");
puts("/////////////////////////");
link_t *p1,*p2;
p1 = p2 = &A;
while(p2 -> next != NULL && p2 -> next -> next != NULL)//这里要注意一下,p2 -> next != NULL是为了处理单数时,指针别指出去
{
p2 = p2 -> next -> next;
p1 = p1 -> next;
}
printf("%d\n",p1 -> a);
}
以上是关于查找链表中间节点的主要内容,如果未能解决你的问题,请参考以下文章