我被要求将我的简单链表转换为双链表,如果有人能给我一些指导的话。非常感谢 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;
}
}
最佳答案
所以,您似乎想在另外两个节点的中间插入一个节点。
你要做的就是创建一个新节点,将指针precedent
和suivant
设置为前一个和下一个节点,并更新前一个和后一个节点的指针下一个节点,类似这样:
所以,如果你改变你的代码来做到这一点,它会是这样的:
// 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++;
}
}
您还必须更改其他方法,以始终让 precedent
和 suivant
指向上一个/下一个节点:
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/