SpringBoot怎么找出两个单链表的交叉节点
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要讲解了"SpringBoot怎么找出两个单链表的交叉节点",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SpringBoot怎么找出两个单链
千家信息网最后更新 2025年12月03日SpringBoot怎么找出两个单链表的交叉节点
这篇文章主要讲解了"SpringBoot怎么找出两个单链表的交叉节点",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SpringBoot怎么找出两个单链表的交叉节点"吧!
题目:写一个程序找出两个单链表的交叉节点。
思路:单链表A和单链表B,交叉点后的部分是一样的,也就是说长度是一样的,如上所示:c1 → c2 → c3。所以,将单链表A和单链表B相差的部分去掉,依次对应比较等长的部分即可。在计算两个链表的长度之后,比较两个链表的尾节点是否一样,如果不一样说明没有交叉节点,返回NULL。
Language : c
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {struct ListNode *curA = (struct ListNode*)malloc(sizeof(struct ListNode));struct ListNode *curB = (struct ListNode*)malloc(sizeof(struct ListNode)); curA = headA; curB = headB;int length_a = 1;int length_b = 1;int i = 0;if(curA == NULL || curB == NULL){return NULL; }while(curA->next != NULL){ curA = curA->next; length_a++; }while(curB->next != NULL){ curB = curB->next; length_b++; }if(curA != curB){return NULL; } curA = headA; curB = headB;if(length_a > length_b){for(i; i < length_a-length_b; i++){ curA = curA->next; } i = 0; }else if(length_a < length_b){for(i; i < length_b-length_a; i++){ curB = curB->next; } i = 0; }while(curA != curB){ curA = curA->next; curB = curB->next; }return curA;}Language : cpp
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode *curA, *curB; curA = headA; curB = headB;if(curA == NULL || curB == NULL){return NULL; }int length_a = getLength(curA);int length_b = getLength(curB);if(length_a > length_b){for(int i=0; i < length_a-length_b; i++){ curA = curA->next; } }else if(length_a < length_b){for(int i=0; i < length_b-length_a; i++){ curB = curB->next; } }while(curA != curB){ curA = curA->next; curB = curB->next; }return curA; }private:int getLength(ListNode *head){int length = 1;while(head->next != NULL){ head = head->next;length++; }return length; }};Language:python
# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object):def getIntersectionNode(self, headA, headB):""" :type head1, head1: ListNode :rtype: ListNode """if headA is None or headB is None:return Nonepa = headA # 2 pointerspb = headBwhile pa is not pb:# pa先遍历headA,然后再遍历headB# pb先遍历headB,然后再遍历headApa = headB if pa is None else pa.next pb = headA if pb is None else pb.nextreturn pa # 只有两种方式结束循环,一种是pa和pb所指相同,另一种是headA和headB都已经遍历完仍然没有找到。
感谢各位的阅读,以上就是"SpringBoot怎么找出两个单链表的交叉节点"的内容了,经过本文的学习后,相信大家对SpringBoot怎么找出两个单链表的交叉节点这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
两个
节点
交叉
部分
学习
内容
思路
长度
相同
也就是
也就是说
交叉点
只有
如上
就是
情况
所指
文章
方式
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
ecu网络安全验证
淮安软件开发一般多少钱
常用的数据库备用方法
苹果储存空间连接服务器
qt连接sqlt数据库
4虎连接不了服务器
路由器怎么映射到服务器
宝山区上门网络技术客户至上
收银系统数据库在哪
信息网络安全测评报告
软件开发课程年末总结600字
内网面临的网络安全
数据库设计基础概念模型
数据库系统的产生
要建立统一高效的网络安全_
新服务器怎么下载浏览器
如何安装服务器系统安装
一流网络安全大学
数据库限制输出
软件开发人员绩效计分卡
数据库成本分析软件
网上书店数据库触发器
数据库连接就业
批量txt转数据库
什么是履行网络安全监督管理
出纳挂接设置数据库在哪里取消
网络安全文明教育手抄报
服务器banner信息
电子网络技术杨振
数据库有什么好书