首页 > 代码库 > 查找链表中间节点
查找链表中间节点
我们可以弄两个指针都指向头节点,然后一个指针每次走一步,另一个每次走两步。
#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);
}
查找链表中间节点
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。