赞
踩
给你两个单链表的头节点 headA
和 headB
,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null
。
- /**
- * Definition for singly-linked list.
- * struct ListNode {
- * int val;
- * struct ListNode *next;
- * };
- */
- struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB)
- {
- if(headA == NULL || headB == NULL)
- return NULL;
- //若链表有一个为空链表,则直接返回NULL
- struct ListNode*p1 = headA,*p2 = headB;//定义两个分别指向两个链表头节点的指针
- while(p1 != p2)
- {
- p1 = (p1!=NULL?p1->next:headB);
- //若p1的next不为空,p1往后移动一个节点,若为空,p1指向另一链表的头节点
- p2 = (p2!=NULL?p2->next:headA);
- //若p2的next不为空,p1往后移动一个节点,若为空,p2指向另一链表的头节点
- }
- return p1;
- //任意返回一个指针,指向即为相交节点因为两个指针在交点相遇
- }
主函数自行编写,调用该函数即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。