C语言判断单链表是否相交
// // Created by Administrator on 2024/10/29. // #ifndef LINK_H #define LINK_H /** * 链表的结构体 */ typedef struct Link { int element; struct Link *next; } link; #endif //LINK_H
// // 判断单链表是否相交 // Created by Administrator on 2024/10/30. // #pragma once #include "Link.h"/*链表结构*/ #ifndef IFCROSSLINK_H #define IFCROSSLINK_H typedef enum bool { False = 0, True = 1, } bool; /** * 判断单链表是否相交 * @param a * @param b * @return */ bool ifCrossLink(link *a, link *b); #endif //IFCROSSLINK_H
// // Created by Administrator on 2024/10/30. // #include "IfCrossLink.h" /** * 判断单链表是否相交 * @param a * @param b * @return */ bool ifCrossLink(link *a, link *b) { link *p1 = a; link *p2 = b; /*1. 暴力比较*/ // while (p1) { // while (p2) { // if (p1 == p2) { // return True; // } // p2 = p2->next; // } // p1 = p1->next; // } /* * 2. 优化 * 单链表相交的场景结构为如下示例 * 【】-> * 【】->【】->【】 * 【】-> * 那么是不是只需要比较最后一个节点是不是同一个节点,就能判断单链表是否相交呢 */ while (p1) { p1 = p1->next; } while (p2) { p2 = p2->next; } if (p1 == p2) return True; return False; }
If the copyright belongs to the longfei, please indicate the source!!!