Java 有人能解释一下算法吗?

Java 有人能解释一下算法吗?,java,data-structures,linked-list,abstract-data-type,Java,Data Structures,Linked List,Abstract Data Type,我需要参数为(LinkedList 1,LinkedList 2)的函数 那么,如何分别为两个列表设置/定义磁头和电流 我不知道为什么这个问题被关闭了。 但我是java新手,需要解决这个问题,所以有人能帮我吗 为了检查一个列表是否是另一个列表的子集,我从 这里是代码,如果我们在参数中传递节点,比如(节点一,节点二),但我希望参数是(linkedlist一,比如列表二),那么有人能解释这样做的算法吗 static boolean checkSubSet(Node first, Node secon

我需要参数为(LinkedList 1,LinkedList 2)的函数

那么,如何分别为两个列表设置/定义磁头和电流

我不知道为什么这个问题被关闭了。 但我是java新手,需要解决这个问题,所以有人能帮我吗

为了检查一个列表是否是另一个列表的子集,我从

这里是代码,如果我们在参数中传递节点,比如(节点一,节点二),但我希望参数是(linkedlist一,比如列表二),那么有人能解释这样做的算法吗

static boolean checkSubSet(Node first, Node second) { 
    Node ptr1 = first, ptr2 = second; 
  
    // If both linked lists are empty, 
    // return true 
    if (first == null && second == null) 
        return true; 
  
    // Else If one is empty and  
    // other is not, return false 
    if (first == null || 
       (first != null && second == null)) 
        return false; 
  
    // Traverse the second list by  
    // picking nodes one by one 
    while (second != null) 
    { 
        // Initialize ptr2 with  
        // current node of second 
        ptr2 = second; 
  
        // Start matching first list  
        // with second list 
        while (ptr1 != null) 
        { 
            // If second list becomes empty and  
            // first not then return false 
            if (ptr2 == null) 
                return false; 
  
            // If data part is same, go to next 
            // of both lists 
            else if (ptr1.data == ptr2.data) 
            { 
                ptr1 = ptr1.next; 
                ptr2 = ptr2.next; 
            } 
  
            // If not equal then break the loop 
            else break; 
        } 
  
        // Return true if first list gets traversed 
        // completely that means it is matched. 
        if (ptr1 == null) 
            return true; 
  
        // Initialize ptr1 with first again 
        ptr1 = first; 
  
        // And go to next node of second list 
        second = second.next; 
    } 
    return false; 
} 
但是如何通过将实际的链表作为参数传递给eg来做同样的事情呢

static boolean checkSubSet(Node first, Node second){}
我不想这样,我想这样做

static boolean checkSubSet(LinkedList<Integer> list1,LinkedList<Integer> list2){} 
静态布尔校验子集(LinkedList list1,LinkedList list2){

您正在尝试重构代码,以便它接受
java.util.LinkedList
作为参数。嗯,我知道你的代码来自。假设您有自己的链表实现。它还假设您可以访问链表节点的
下一个
数据部分。不幸的是,java
LinkedList
没有公开这些内容,因此您的代码对您的问题没有用处

您需要为Java
LinkedList
设计一个新的算法。因为
LinkedList
不是
集合
。在
LinkedList
上执行set函数不是很有意义。然而, 如果您确实需要,您可以使用以下内容:

return new HashSet(a).containsAll(new HashSet(b));

或者,迭代列表以获得所需内容。

这不是我的代码。这就是为什么我说“我有这个代码”而不是“我写了这个代码”。无论如何,谢谢你指出这一点,我编辑了这个问题并提供了参考。