`

编写一个方法,检测两个单向链表的内容是否相同

阅读更多
思路:
在百度知道上面有个人是这么回答的:
1:设置一个BO0L性变量 res=true;
2:读每个单向链表的第一个字符 *a,*b
3:*a=*b?next():res=false;
4:继续到2;

我觉得吧,对于像int short等比较好比较的类型的链表,我直接先排序然后再比较。如果是String类型的,也可以操作,比如按照字符的大小进行排序然后在比较,这样也可以。如果是自定义类型的链表,比如 List<User>,这个时候可以自定义排序的方法,比如按照User ID或者username进行排序。

如果不进行排序,那么只能进行n * m次比较了。其中n m分别为两个链表的size

我觉得百度知道上面的这个人的回答有问题。



不知道还有没有更加好一点的方法。我觉得应该有~
要是能够难道这本书的答案就好了。




PS@10-09-25 16:55

将每个节点加入到一颗树里面,要是是平衡树就最好了。每个树节点包括加入的次数以及是从第一个链表还是第二个链表加入进来的。
最后进行一次遍历即可。
分享到:
评论

相关推荐

    实验二 单向链表的有关操作.cpp

    1.随机产生或键盘输入一组元素,...编写在非递减有序链表中插入一个元素使链表元素仍有序的函数,并利用该函数建立一个非递减有序单向链表。 6.利用算法5建立两个非递减有序单向链表,然后合并成一个非递增链表。

    python数据结构链表之单向链表(实例讲解)

    单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。 表元素域elem用来存放具体...

    链表,建立链表、遍历链表、排序、去重、反转。。。。

    利用算法5建立两个非递减有序单向链表,然后合并成一个非递减链表。 (7).利用算法1建立的链表,删除链表中的重复元素。 (8).利用算法1建立的链表,实现将其分解成两个链表,其中一个全部为奇数,另一个全部为偶数...

    C语言 数据结构之单链表基本操作

    单链表的各种操作,适合于初学,也适合于复习 单链表操作介绍 1. 创建头节点 2. 创建有数据节点 3. 判断链表是否为空 ...13. 已知两个链表head1和head2各自有序,请把它们合并成一个链表依然有序,要求用递归方法

    单向链实现任意长的整数加法

    1. 采用单向链表实现任意长的整数加法, 2. 编写子函数完成从键盘输入整数的功能; (3)编写子函数完成两个整数相加的功能; (4)编写子函数完成输出结果的功能; (5)编写主函数,通过调用以上各子函数完成...

    任务控制块及其链表

    (2)设计函数OSInit()对全局变量进行初始化,定义一个数组OS_TCB OSTCBTbl[],创建单向链表OSTCBFreeList 把数组OSTCBTbl的各个元素链接,生成一个空任务链表OSTCBFreeList; (3)设计函数OS_TCBInit(INT8U prio)...

    数据结构报告c++代码+截图

    5、编写在非递减有序链表中插入一个元素使链表元素仍有序的函数,并利用该函数建立一个非递减有序单向链表。 6、利用算法5建立两个非递减有序单向链表,然后合并成一个非递增链表。 7、利用算法5建立两个非递减有序...

    这是Kotlin语言版本的 Android 客户端本地化算法展示 Java 语言编写的面试算法_kotlin_代码_下载

    一个鉴定链表是否为回文结构 将单向链某值分割成小表、送、按右边大的形式 复制带有日常指针的节点表 两个单链表生成相加链表 两个单链表相交的问题 将单链表的每K个节点之间逆序 二叉树问题 用二叉、先序和序顺序...

    用C语言编写的约瑟夫环程序

    本程序主要是以建立单循环链表的形式,利用单向循环链表存储结构模拟此过程,建立起一个约瑟夫环,然后根据之前创立的结点,输入结点里的一些数据,程序有主函数开始,首先,提示输入创建约瑟夫环环数以及每个环上所...

    数据结构第4次作业.docx

    (3)已知二叉树(二叉链表)根结点指针bt,利用二叉树叶子结点的rchild指针域将所有叶子结点从左向右连接成一个单向链表。算法返回单向链表头结点指针(即最左边第1个叶子结点的地址)。 2. 编程题 (1) 从键盘输入一个...

    leetcode不会-Code-for-Interview:面试守则

    编写一个函数来反转单向链表和双向链表 以给定大小的组反转列表 为什么数组优先使用快速排序,链表优先使用合并排序 链表的归并排序 2个链表的并集和交集 编写函数获取两个链表的交点 从单向链表中选择一个随机节点 ...

    西南交通大学-zhy-数据结构第4次作业.docx

    (3) 已知二叉树(二叉链表)根结点指针bt,利用二叉树叶子结点的rchild指针域将所有叶子结点从左向右连接成一个单向链表。算法返回单向链表头结点指针(即最左边第1个叶子结点的地址)。 2. 编程题 (1) 从键盘输入一个...

    用c编的学生管理系统

    实现 增 删 查 改 的单向链表用c语言编写的,分为两个结构体

    《数据结构 1800题》

    6.数据结构中评价算法的两个重要指标是(时间复杂度和空间复杂度) 【北京理工大学 2001 七、1(2分)】 7. 数据结构是研讨数据的_(1)物理结构_和_(2)逻辑结构 _,以及它们之间的相互关系,并对与这种结构定义...

    lrucacheleetcode-Algorithms:算法

    lru缓存leetcode 算法 数组 二分查找 - , 找到最大滑动窗口 - 搜索旋转数组 - 找到最小的公数 ...两个值之和 ...反转单向链表 ...两个列表的交点 ...从最后一个节点开始的第 ...为二叉树编写一个中序迭代器 - 迭代中序遍历

    leetcode不会-delete-node-in-a-linked-list:删除链表中的节点

    编写一个函数来删除单向链表中的节点(尾部除外),只允许访问该节点。 给定链表——head = [4,5,1,9]。 Example 1: Input: head = [4,5,1,9], node = 5 Output: [4,1,9] Explanation: You are given the second ...

    C语言程序设计标准教程

     本程序中定义了一个结构mem,它有两个成员name和phone 用来表示姓名和电话号码。在主函数中定义man为具有mem 类型的结构数组。在for语句中,用gets函数分别输入各个元素中两个成员的值。然后又在for语句中用printf...

    扔鸡蛋leetcode-Leetcode:力码

    编写一个有效的方法来检查一个数是否是 3 的倍数 7. 最右边设置位的位置 8. 找出出现奇数次的次数 136.单号 9.最大和连续子阵列 53. 最大子阵列 10. 找到缺失的数字(给定一个 n-1 个整数的列表,这些整数在 1 到 n ...

    线性表 实验报告.docx

    试写一高效算法,删除表中所有大于mink且小于maxk的元素(若表中存在这样的元素),分析你的算法的时间复杂度(注意:mink和maxk是给定的两个参变量,它们的值为任意的整数)。 参考实验指导书“实验题 5:删除有序...

    世界500强面试题.pdf

    1.3.2. 输入一个单向链表,输出该链表中倒数第 k 个结点............................. 44 1.3.3. 输入一个已经按升序排序过的数组和一个数字.................................... 46 1.3.4. 输入一颗二元查找树,...

Global site tag (gtag.js) - Google Analytics