在单一优先级链接列表中搜索和删除功能

时间:2013-04-26 06:33:54

标签: java data-structures priority-queue singly-linked-list

我想在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;
    }
}

}

1 个答案:

答案 0 :(得分:1)

由于你的Node课程中的属性,我会猜测并计算它。
你为什么宣称它们是静态的?
这会导致Node的每个实例共享相同的属性(valuenext)值。

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

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

请参阅how and where to use static modifiers