在Java中的LinkedList数据结构中遍历,插入和删除

时间:2016-07-09 15:56:21

标签: java arrays data-structures linked-list

我是数据结构的新手。我很好奇学习数据结构,但我没有找到任何健康的教程,所以我在这里发布它认为有人会帮助我。我知道链表的理论,但实施时却完全空白。如果有人能让我理解它是如何工作的,对我来说真的很有用。就像如何遍历链表,插入和删除一样。请提供一个运行代码,以便我理解。 我知道有很多人会考虑将这个问题标记为重复并且将此问题投降。如果你们为我提供一个真正有用的好解决方案,而不是发现错误。谢谢。

2 个答案:

答案 0 :(得分:0)

首先,如果你继续使用youtube并搜索Derek Banas,你会在LinkedLists上找到一个很棒的视频,以及如何实现它们。他谈得很快,但我认为内容很好。跟随他的视频,在视频之后我认为你会有更好的理解。

https://www.youtube.com/watch?v=195KUinjBpU

答案 1 :(得分:0)

简单实现链接列表,显示追加,插入,删除和迭代。效率低下,他们需要弄清楚:)去做一些研究,看看如何让它变得更好。

public class LinkedList {
    public static class Node {
        private Object data;
        private Node next = null;

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

        public void setNext(Node n) {
            next = n;
        }

        public Node getNext() {
            return next;
        }

        public Object getData() {
            return data;
        }
    }

    public static void iterate(Node n) {
        while (n != null) {
            System.out.println(n.getData());
            n = n.getNext();
        }
    }

    public static void insert(Node newNode, Node after) {
        newNode.setNext(after.getNext());
        after.setNext(newNode);
    }

    public static void delete(Node toDelete, Node root) {
        Node n = root;
        while (n.getNext() != toDelete) {
            n = n.getNext();
        }
        n.setNext(toDelete.getNext());
    }

    public static void main(String[] args) {
        Node a = new Node("a");
        Node b = new Node("b");
        Node c = new Node("c");

        // append
        a.setNext(b);
        b.setNext(c);

        // iterate
        System.out.println("Initial list");
        iterate(a);

        // insert d after b
        Node d = new Node("d");
        insert(d, b);

        // iterate again
        System.out.println("After insert");
        iterate(a);

        // delete d
        delete(d, a);

        // iterate again
        System.out.println("After delete");
        iterate(a);
    }
}