Java 有人能解释一下算法吗?
我需要参数为(LinkedList 1,LinkedList 2)的函数 那么,如何分别为两个列表设置/定义磁头和电流 我不知道为什么这个问题被关闭了。 但我是java新手,需要解决这个问题,所以有人能帮我吗 为了检查一个列表是否是另一个列表的子集,我从 这里是代码,如果我们在参数中传递节点,比如(节点一,节点二),但我希望参数是(linkedlist一,比如列表二),那么有人能解释这样做的算法吗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
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
作为参数。嗯,我知道你的代码来自。假设您有自己的链表实现。它还假设您可以访问链表节点的下一个
和数据部分。不幸的是,javaLinkedList
没有公开这些内容,因此您的代码对您的问题没有用处
您需要为JavaLinkedList
设计一个新的算法。因为LinkedList
不是集合
。在LinkedList
上执行set函数不是很有意义。然而,
如果您确实需要,您可以使用以下内容:
return new HashSet(a).containsAll(new HashSet(b));
或者,迭代列表以获得所需内容。这不是我的代码。这就是为什么我说“我有这个代码”而不是“我写了这个代码”。无论如何,谢谢你指出这一点,我编辑了这个问题并提供了参考。