我需要创建自己的简单LinkedList

时间:2014-03-19 20:23:54

标签: java linked-list

我不明白如何向我的List添加许多组件以及如何解决这些问题。

public class Element {
    public Object object;
    public int index;
    public Element(Object object){
        this.object = object;
    }
}

public class LinkedList {
    private Element element;
    private int nextLink = 0;
    private int prevLink;
    private int index;


    public void add(Object newElement) {
        nextLink++;
        prevLink++;
        this.index = nextLink - prevLink;
        if (nextLink == 0) {
            prevLink=0;
            this.index = 0;
        }
        else {
            prevLink++;
            this.index = nextLink - prevLink;}
            nextLink++;
            System.out.println(element);
            Element element = new Element(newElement);
            this.element = element;
            if (nextLink == 0) {
                prevLink=0;
                this.index = 0;
            }
            else {
                prevLink++;
                this.index = nextLink - prevLink;}
                nextLink++;
                System.out.println(element);
            }

        public void get(int index) {        
        }
        public void remove(int index) { 
        }
    }


    public class Main {
        public static void main(String[] args) {
            LinkedList linked = new LinkedList();
            linked.add("234");
            linked.add("255");
            linked.add("1");
            System.out.println(linked);
            linked.get(1);
        }
    }

我有一个很大的问题,因为我的列表中只有一个元素,当我想添加新元素时,我的旧元素重写。我不知道如何纠正这个问题.. :(((((

3 个答案:

答案 0 :(得分:0)

通常在链表中,元素包含对列表中下一个元素的引用。您的Element课程似乎无法引用列表中的下一个元素。

链接列表上的维基百科条目可能是一个很好的起点:http://en.wikipedia.org/wiki/Linked_list

答案 1 :(得分:0)

每个元素必须包含指向下一个元素的链接。索引是不必要的,适得其反。

首先将Element类重写为:

public class Element {
    public Object object;
    public Element next;
    public Element(Object object){
    this.object = object;
    }
}

答案 2 :(得分:0)

我建议创建这样的东西。您需要引用下一个元素。如下面的代码所示。

E是通用类型。它允许您在代码Listnode<String> l;中创建列表节点showin。泛型的好处是您可以轻松地创建整数的Listnode。像这样。 Listnode<Integer> integerList;

public class Listnode<E> {
          //*** fields ***
            private E data;
            private Listnode<E> next;

      //*** constructors **/
    // 2 constructors
    public Listnode(E d) {
        this(d, null);
    }

    public Listnode(E d, Listnode n) {
        data = d;
        next = n;
    }

  //*** methods ***
    // access to fields
    public E getData() {
        return data;
    }

    public Listnode<E> getNext() {
        return next;
    }

    // modify fields
    public void setData(E d) {
        data = d;
    }

    public void setNext(Listnode<E> n) {
        next = n;
    }
}

这实际上是否实现所有

http://pages.cs.wisc.edu/~skrentny/cs367-common/readings/Linked-Lists/list-ex1.gif

THIS CREATES A LISTNODE OF STRINGS

现在这段代码创建了一个新节点。该节点称为“l”,l指向“节点”,该节点将值“ant”保存为字符串。您现在还可以看到下一个值为空,如“\”

所示

您也可以随意设置/更改值。

enter image description here