java双链表,简单链表转换为双链表

标签 java

我被要求将我的简单链表转换为双链表,如果有人能给我一些指导的话。非常感谢 thx.. 当我使用insertionapres(elements) 插入元素时,我应该将新节点放入临时节点吗???

public class dlink {

private static class node{

 private Object element;
 private node next;
 private node prev;

 public node(Object element){
         this.element = element;
         next = null;
         prev= null;
     }
 }

最佳答案

所以,您似乎想在另外两个节点的中间插入一个节点。

你要做的就是创建一个新节点,将指针precedentsuivant设置为前一个和下一个节点,并更新前一个和后一个节点的指针下一个节点,类似这样:

Double Linked List Node Insertion

所以,如果你改变你的代码来做到这一点,它会是这样的:

// Insert a new node after position
public void insererApres(Object element){
    if(debut == null)
        insererDebut(element);
    else if (position == fin)
        insererFin(element);
    else {
        // First, create the new node
        Noeud nouveau = new Noeud(element);

        // Set the pointers
        nouveau.suivant = position.suivant;
        nouveau.precedent = position;

        // Update the previous node pointer
        nouveau.precedent.suivant = nouveau;

        // Update the next node pointer
        nouveau.suivant.precedent = nouveau;

        position = position.suivant;

        nbElement++;            
    }
}

您还必须更改其他方法,以始终让 precedentsuivant 指向上一个/下一个节点:

public void insererDebut(Object element){
    Noeud noeud = new Noeud(element);

    noeud.suivant = debut;

    if (noeud.suivant!=null)
        noeud.suivant.precedent = noeud;

    debut = noeud;

    if (nbElement == 0)
        fin = debut;

    position = debut;

    nbElement++;
}

public void insererFin(Object element){
    if(debut == null)
        insererDebut(element);
    else{   
        fin.suivant = new Noeud(element);

        fin.suivant.precedent = fin;

        fin = fin.suivant;

        position = fin;

        nbElement++;
    }               
}

关于java双链表,简单链表转换为双链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22263914/

相关文章:

java - 是否可以尝试/捕获某些东西来检查是否引发了异常?

java.lang.NoClassDefFoundError : cucumber/api/formatter/Formatter on running a . 功能文件

java - 从文本文件读取时如何分割

java - maven 插件别名是如何映射的

java - 使用 JMockIt 模拟简单的属性访问

java - 如何在运行时根据用户/程序员的需要自动增加数组的大小?

java - Libgdx spine2d 骨骼动画

java - 在java线程中正确同步Vector

java - 如何使用 SVNKit 获取添加的文件

java - 在 tomcat 实例之间共享 session (不使用粘性 session )