有人可以解释算法吗?



我需要参数函数(链接列表一,链接列表二(

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

我不知道为什么这个问题被关闭了。 但是我是Java的新手,需要解决这个问题,所以任何人都可以提供帮助???

要检查一个列表是否是另一个列表的子集,我有来自 GeeksforGeeks 的这段代码

如果我们在参数中传递节点,例如(节点一,节点二(,这是代码,但我希望参数为(链接列表一,喜欢列表二(,所以任何人都可以解释算法这样做???

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; 
} 

但是如何通过将实际的链表作为参数传递来做同样的事情,例如

static boolean checkSubSet(Node first, Node second){}

而不是这个,我想这样做

static boolean checkSubSet(LinkedList<Integer> list1,LinkedList<Integer> list2){} 

您正在尝试重构代码,以便它接受java.util.LinkedList作为参数。好吧,我看到你的代码来自极客。geeksforgeeks 假定你有自己的链表实现。它还假定您有权访问链表节点的nextdata部分。不幸的是,javaLinkedList不会公开这些内容,因此您的代码对您的问题没有用。

您需要为 JavaLinkedList设计一个新算法。由于LinkedList不是Set.在LinkedList上执行集合函数不是很有意义。然而 如果你真的需要,你可以使用这样的东西:

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

或者,遍历列表以获得所需的内容。

相关内容

  • 没有找到相关文章

最新更新