我想在java中的优先级链表中执行搜索操作,我已经为此编写了一个搜索和删除方法,但是我在将这些方法调用到我的main函数时遇到了困难?到目前为止,这是我的代码。
import java.util.*;
class Node {
public static Node next = null;
public static int item = 0;
public Node(int item) {
this.item = item;
}
}
public class Main {
static PriorityQueue<String> stringQueue;
public static void main(String[] args) {
stringQueue = new PriorityQueue<String>();
stringQueue.add("1");
stringQueue.add("2");
stringQueue.add("3");
stringQueue.add("6");
stringQueue.add("6");
stringQueue.add("5");
stringQueue.add("9");
stringQueue.add("8");
stringQueue.add("7");
stringQueue.add("4");
while (stringQueue.size() > 0)
System.out.println(stringQueue.remove());
Node head = null;
}
public static Node searchNodeFIFO(Node head, int item) {
System.out.println("In Search Node");
Node cHead = head;
while (cHead != null) {
if (cHead.item == item)
return cHead;
cHead = cHead.next;
}
return null;
}
public Node deleteNodeFIFO(Node head, int item) {
System.out.println("In Delete Node");
if (head.item == item)
return head.next;
Node cNode = head;
Node nNode = head.next;
while (nNode != null) {
if (nNode.item == item) {
cNode.next = nNode.next;
break;
} else {
cNode = nNode;
nNode = nNode.next;
}
}
return head;
}
public void printLinkList(Node head) {
while (head != null) {
System.out.println(head.item);
head = head.next;
}
}
}
答案 0 :(得分:1)
由于你的Node
课程中的属性,我会猜测并计算它。
你为什么宣称它们是静态的?
这会导致Node
的每个实例共享相同的属性(value
和next
)值。
结构中包含它们的每个项目都是相同的。
尝试从static
属性声明中删除Node
修饰符。