【问题标题】:Traversing,Insertion and Deletion in LinkedList data structure in java [duplicate]java中LinkedList数据结构中的遍历、插入和删除[重复]
【发布时间】:2016-07-09 15:56:21
【问题描述】:

我是数据结构的新手。我很想学习数据结构,但我没有找到任何健康的教程,所以我把它贴在这里,以为有人会帮助我。我知道链表的理论,但在实现时完全空白。如果有人能让我理解它是如何工作的,那对我真的很有帮助。比如,如何遍历链接列表、插入和删除。请给我一个运行代码,以便我理解。 我知道有很多人会考虑将此问题标记为重复问题并对此投反对票。如果你们为我提供一个非常有用的好解决方案,而不是发现错误。谢谢。

【问题讨论】:

  • 这是一个大问题,我的朋友。祝你好运。
  • 看看java.util.LinkedList。可能有一些(如果不是很多)开销。但这应该会给你一些起点。

标签: java arrays data-structures linked-list


【解决方案1】:

显示追加、插入、删除和迭代的链表的简单实现。存在效率低下的问题,您可以自己弄清楚:) 去做一些研究,看看如何让它变得更好。

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

【讨论】:

  • 非常感谢好友@adamreeve,它帮助了我很多。 :)
【解决方案2】:

首先,如果您在 youtube 上搜索 Derek Banas,您会在 LinkedLists 上找到一个很棒的视频,以及如何实现它们。他说得很快,但在我看来,内容讲得很好。跟着他的视频一起看,看完视频我想你会有更好的理解。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-20
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    相关资源
    最近更新 更多