java链表与第一个元素进行比较,并使用peek()方法删除

时间:2016-04-14 07:18:26

标签: java arrays list arraylist

创建java链表以添加一些数据。想比较该链表中的第一个数据。当我使用peek()它不工作。获取前面元素和比较或如何编写peek()方法的任何其他方法

LinkList类:

package list;

public class LinkList {
    private class Node<T> {

        public final T data;
        public Node next;

        public Node(T data) {
            this.data = data;
        }

        public void displayNode() {
            System.out.print(data + " ");
        }
    }

    public static Node first = null;
    private Node last = null;

    public boolean isEmpty() {
        return (first == null);
    }

    public <T> void addLast(T data) {
        Node n = new Node(data);
        if (isEmpty()) {
            n.next = first;
            first = n;
            last = n;
        } else {
            last.next = n;
            last = n;
            last.next = null;
        }
    }

    public void removeFirst() {

        Node temp = first;
        if (first.next == null) {
            last = null;
        }
        first = first.next;

    }

    public void displayList() {
        Node current = first;
        while (current != null) {
            current.displayNode();
            current = current.next;
        }
    }

}

LinkListQueue:

package list;

public class LinkListQueue {
    LinkList newLinkList = new LinkList();

    public <T> void enqueue(T data) {
        newLinkList.addLast(data);

    }

    public void dequeue() {
        if (!newLinkList.isEmpty()) {
            newLinkList.removeFirst();
        }

    }

    public String displayQueue() {
        newLinkList.displayList();
        System.out.println();

        return "";
    }

    public boolean isEmpty() {
        return newLinkList.isEmpty();
    }
}

LinkListQueueMain:

package list;

public class LinkListqueueMain {
    public String getValue=null;
    public static String displayQ = null;
    static LinkListQueue queueImpl = new LinkListQueue();
    static LinkList linkList = new LinkList();

    public static void main(String[] args) {
        runData();
    }

    public static void runData() {
        queueImpl.enqueue("80%");
        queueImpl.enqueue("70%");
        queueImpl.enqueue("60%");
        queueImpl.enqueue("85%");
        queueImpl.enqueue("45%");
        queueImpl.enqueue("55%");

        for (int i = 0; i < 5; i++) {
            System.out.println(linkList.toString());
        }
    }
}

这是我的代码。知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

首先你需要对LinkList进行参数化,不一定是节点,因为LinkList是外部世界的公共API。

public class LinkList<T> {
    private static class Node {

然后你可以返回删除的值。 (removeFirst可以在空列表上抛出NullPointerException。)

public T removeFirst() {
    T removed = first.data;
    if (first.next == null) {
        last = null;
    }
    first = first.next;
    return removed;
}

public T peekFirst() {
    return first.data;
}