-1

我想在java中的优先级链表中执行搜索操作,我已经为此编写了一个搜索和删除方法,但是我在将这些方法调用到我的主函数时遇到了困难?到目前为止,这是我的代码。

import java.util.*;

类节点{

public static Node next = null;
public static int item = 0;

public Node(int item) {
    this.item = item;
}

}

公共类主要{

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

}

4

1 回答 1

1

我将大胆猜测并认为这是因为您Node班级中的属性。
你为什么将它们声明为静态的?
这会导致 的每个实例Node共享相同的属性 (valuenext) 值。

结构中包含它们的每个项目都是相同的。

尝试从属性声明中删除static修饰符。Node

了解如何以及在何处使用静态修饰符

于 2013-04-26T06:44:10.173 回答