`

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

阅读更多
思路:
在百度知道上面有个人是这么回答的:
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

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

相关推荐

    C#单向链表的实现

    单向链表是由一系列节点组成,每个节点包含两个部分:数据域和指针域。数据域存储实际的数据,而指针域则指向下一个节点的地址。与数组不同,链表中的元素并不在内存中连续存放,这使得链表在插入和删除操作上具有较...

    单向链表 代码架构

    单向链表的每个节点包含两部分:数据和指向下一个节点的引用。 在给定的“单向链表 代码架构”中,我们可以期待找到以下几个关键知识点: 1. **链表节点结构**:通常,链表节点由数据域(用于存储数据)和指针域...

    单向链表类模板_单向链表类模板_fastchq_

    标题"单向链表类模板_单向链表类模板_fastchq_"表明这是一个关于使用模板类实现单向链表的代码,可能由用户fastchq编写或维护。 单向链表类模板的基本结构通常包括以下几个部分: 1. **节点定义**:首先,我们需要...

    单向链表源代码

    这段源代码提供了一个简单的单向链表实现,包括插入、删除和打印链表的方法。你可以根据实际需求扩展其他功能,如查找节点、反转链表等。在培训班中,这样的代码示例有助于学员理解和掌握单向链表的工作原理及其在...

    单向链表实验报告(数据结构)

    单向链表是一种线性数据结构,每个节点包含一个数据元素和一个指向下一个节点的指针。实验使用VC++ 6.0作为编程工具,旨在通过实践来深入理解和掌握单向链表的相关操作。 实验目的: 1. 掌握单向链表的存储结构和...

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

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

    数据结构 单向链表 双向链表 源程序

    插入和删除操作在双向链表中也更为复杂,因为需要同时更新前后两个节点的指针。然而,由于这种双向性,某些操作(如查找某个节点的前一个或后一个节点)可能会更快。 源程序,通常是指用高级编程语言编写的未经过...

    C语言实现的单向链表和双向链表

    单向链表是一种线性数据结构,其中的每个元素(节点)包含两个部分:数据和指向下一个节点的指针。由于节点只能向前移动,因此称为单向链表。单向链表的基本操作包括插入、删除和遍历。 1. **结构定义**: 在C语言...

    单向链表模板

    在实际应用中,使用这个模板化的单向链表,你可以轻松地处理不同类型的数据,同时避免了为每种类型重复编写相同代码。这种灵活性和代码复用是C++模板的一大优势。然而,也需要注意模板可能导致的编译时膨胀问题,...

    单向链表类模板(全)C++

    单向链表的特点是每个节点包含一个数据元素和一个指向下一个节点的指针,最后一个节点的指针为空。本压缩包文件提供了实现单向链表类模板的完整代码,包括以下几个关键部分: 1. **LinkList.h** - 这是单链表类的...

    单向链表的操作____

    创建一个单向链表首先需要定义一个结构体来表示链表节点,通常称为`struct Node`。这个结构体包含两个字段,一个是数据字段,另一个是指针字段。例如: ```c typedef struct Node { int data; struct Node* next;...

    两列单向链表相同值查询设计

    本篇文章将详细介绍如何设计并实现一个程序,该程序能构建两个单向链表,并根据第一个链表中的值来查询第二个链表中是否存在相同的值及其位置。该任务属于基础强化训练的一部分,涉及到的数据结构与算法知识主要包括...

    有关单向链表的增删改查

    单向链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的引用。在计算机科学中,理解和操作链表是至关重要的技能,特别是在算法和数据结构的学习中。本主题将深入探讨单向链表的增、...

    C语言实现单向链表的创建、插入,删除节点,和2个链表合并

    总结,本篇文章介绍了C语言实现单向链表的基本操作,包括创建链表、插入节点、删除节点、判断链表是否有环以及合并两个已排序的链表。通过理解这些基本操作,可以为更复杂的数据结构和算法打下坚实的基础。在VC6.0...

    list_si.rar_单向链表

    总之,这个压缩包提供了一个单向链表的自定义实现,对于学习数据结构和算法的初学者来说,这是一个很好的实践案例。通过阅读和理解这个实现,我们可以更好地掌握单向链表的工作原理,以及如何在实际编程中使用它。...

    graph_DFS.zip_C语言单向链表_linux 链表_链表_链表 linux

    总的来说,"graph_DFS.zip"中的内容提供了关于C语言单向链表实现和链表在Linux环境下的操作实践,同时可能涵盖了如何使用链表表示图并进行深度优先搜索的知识点。这不仅有助于深化对数据结构的理解,还能提升在实际...

    链表结构(学生成绩)

    链表由多个节点构成,每个节点包含两部分:一部分是存储数据的数据域,另一部分是存储指向下一个节点地址的指针域。在本案例中,节点的数据域包含学生的信息,而指针域则指向链表中的下一个学生信息节点。 **2. ...

    单向链表的基本操作C语言

    5. **打印链表**:为了查看链表的内容,我们可以编写一个函数来遍历链表并打印每个节点的数据。 ```c void printList(ListNode* head) { ListNode* current = head; while (current != NULL) { printf("%d -&gt; ...

    Kotlin 写单向链表题

    上述代码展示了如何在Kotlin中创建一个单向链表类,包括初始化、添加元素、遍历、插入、删除和获取链表长度等基本操作。使用这些方法,我们可以方便地处理单向链表。 在实际编程中,链表结构常用于实现各种算法,如...

    java 单链表和双向链表的实现

    而双向链表则更进一步,每个节点不仅有指向下一个节点的指针,还有一个指向前一个节点的指针。这种额外的指针使得双向链表在某些操作上比单链表更灵活,但也增加了存储空间的需求。 **单链表的实现:** 在Java中,...

Global site tag (gtag.js) - Google Analytics