zoukankan      html  css  js  c++  java
  • 【链表】如何判断两个链表是否相交

    分析:

    两条单向链表相交的唯一可能是(b),以为链表结点只有一个指针域不可能指向两个不同的结点。

    手画图还是丑的,我需要学画图软件了(╯﹏╰)b

    思路:

    • 遍历两个链表分别存入栈s1和s2;
    • 只要两个栈不空就一起出栈,遇到第一个不同的元素就是相交的结点。
     1 #include <iostream>
     2 #include <stack>
     3 using namespace std;
     4 typedef struct ListNode* List;
     5 struct ListNode {
     6     int data;
     7     List next;
     8 };
     9 stack<List>s1;
    10 stack<List>s2;
    11 
    12 //遍历两个链表将结点入栈
    13 void Traversal(List L1, List L2) {
    14     while (L1!= NULL) {
    15         s1.push(L1);
    16         L1 = L1->next;
    17     }
    18     while (L2!= NULL) {
    19         s2.push(L2);
    20         L2 = L2->next;
    21     }
    22 }
    23 //判断是否相交
    24 List judge() {
    25     List tmp=NULL;
    26     while (!s1.empty() && !s2.empty) {
    27         if (s1.top() != s2.top()) 
    28             break;
    29         tmp = s1.top();
    30         s1.pop();
    31         s2.pop;
    32     }
    33     return tmp;
    34 }
  • 相关阅读:
    kmp学习笔记(模板)
    最小表示法 (模板)
    Codeforces 1339C
    Codeforces 1339D
    Codeforces 1244C
    Codeforces 1262D2
    Codeforces 1330D
    Problem M. Mediocre String Problem
    Codeforces 1326D2
    selenium读取数据文件
  • 原文地址:https://www.cnblogs.com/PennyXia/p/12652243.html
Copyright © 2011-2022 走看看