当前位置:   article > 正文

leetcode刷题-相交链表_编写一个程序,找到两个单链表相交的起始节点。leetcode

编写一个程序,找到两个单链表相交的起始节点。leetcode

编写一个程序,找到两个单链表相交的起始节点。

 思路:考虑两个简单无环的单向链表,若相交,从某个节点之后节点相同,一定呈Y字形相交。

方法一、借用栈结构,使用两个栈,分别加入A, B链表的节点;然后对栈遍历,若栈顶元素相等,则一定相交,记录此时的节点,元素出栈,一直到栈顶元素不相等,此时之前记录的节点就是相交节点。

代码:

  1. /**
  2. * Definition for singly-linked list.
  3. * struct ListNode {
  4. * int val;
  5. * ListNode *next;
  6. * ListNode(int x) : val(x), next(NULL) {}
  7. * };
  8. */
  9. class Solution {
  10. public:
  11. ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
  12. ListNode *pa = headA, *pb=headB;
  13. stack <ListNode*> sa; //链表 A 入栈
  14. while (pa)
  15. {
  16. sa.push(pa);
  17. pa = pa->next;
  18. }
  19. stack <ListNode*> sb; //链表 B 入栈
  20. while (pb)
  21. {
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/980654
推荐阅读
相关标签
  

闽ICP备14008679号