2012-12-16 139 views
2

我必须实现双链表。 prepend的方法应该插入一个新的元素bevor现有的列表。但我不知道如何将新元素的引用“next”与旧列表的引用“prev”链接起来。 在此先感谢。 在双链表中插入新元素

public class DoublyLinkedList { 

private String info; 
private DoublyLinkedList next; 
private DoublyLinkedList prev; 

public DoublyLinkedList(String info) { 
    this.info = info; 
    this.next = this.prev = null; 
} 

private DoublyLinkedList(String info, DoublyLinkedList prev, DoublyLinkedList next) { 
    this.info = info; 
    this.prev = prev; 
    this.next = next; 
} 

DoublyLinkedList prepend(String info) { 
    // Beginning of a list, insert new element 
    if (prev == null) { 
     prev = new DoublyLinkedList(info, null, next); 
    } else { 
     prev.prepend(info); 
    } 
    return prev; 
} 

回答

0

你需要通过设置新节点的next_link与当前节点的新节点与当前节点联系起来。

public class DoublyLinkedList { 
    ... 
    DoublyLinkedList prepend(String info) { 
     // Beginning of a list, insert new element 
     if (prev == null) { 
      // this is the changed line. 
      prev = new DoublyLinkedList(info, null, this); 
     } else { 
      prev.prepend(info); 
     } 
     return prev; 
    } 
} 
+1

@ M.ElSaka:谢谢非常多 –

+0

你能帮我用metode delete(int index):对于同样的问题,我不知道如何实现它? –

2

首先命名你的班级DoublyLinkedNode。链接的这样的对象系列将形成双重链接列表

使用正确的类名非常重要。一旦你修复了你的nsme即节点而不是列表,问题应该容易得多。

在伪代码:

  • 设定的预根到新节点
  • 设置新的下一个节点根
  • 组根新的节点