本篇文章为你整理了双向链表实现思路(双向链表的构造方法)的详细内容,包含有双向链表的4步理由 双向链表的构造方法 双向链表的含义 双向链表流程图 双向链表实现思路,希望能帮助你了解 双向链表实现思路。
遍历
和单向链表的遍历相同,需要一个辅助节点来保存当前正在遍历的节点
添加
双向链表多出了一个front,所以在添加时,要让新增节点的front指向链表尾节点
修改
和单向链表的修改相同
删除
使用temp来保存要删除的节点
temp.front.next指向temp.next
temp.next指向temp.front
代码
package com.wyh.linkedlist;
public class DoubleLinkedListDemo {
public static void main(String[] args) {
StudentLinked studentLinked = new StudentLinked();
studentLinked.addNode(new Node(1,"张三"));
studentLinked.addNode(new Node(2,"李四"));
studentLinked.addNode(new Node(3,"王五"));
studentLinked.addNode(new Node(4,"二蛋"));
studentLinked.updateNode(new Node(4,"狗蛋儿"));
studentLinked.delete(4);
studentLinked.list();
class StudentLinked{
//定义头节点
private Node head = new Node(0,"");
//遍历双向链表
public void list(){
if (head.next == null){
System.out.println("链表为空");
return;
Node temp = head.next;
while (true){
if (temp == null){
break;
System.out.println(temp);
temp = temp.next;
//添加节点
public void addNode(Node newNode){
Node temp = head;
while(temp.next!=null){
temp = temp.next;
temp.next = newNode;
newNode.front = temp;
//删除节点
public void delete(int no){
if (head.next == null){
System.out.println("链表为空");
return;
Node temp = head.next;
boolean flag = true;
while (temp!=null){
if (temp.no == no){
if (temp.next!=null){
temp.next.front = temp.front;
temp.front.next = temp.next;
flag =false;
temp = temp.next;
if (flag){
System.out.println("未找到节点");
//更改节点的信息
public void updateNode(Node newNode) {
if (head.next == null){
System.out.println("队列为空,无法更改");
return;
Node temp = head.next;
boolean flag = false;
while (true){
if (temp == null){
break;
if (temp.no == newNode.no){
flag = true;
break;
temp = temp.next;
if (flag){
temp.name = newNode.name;
}else {
System.out.printf("没有找到编号为%d的节点,无法修改\n",newNode.no);
本文来自,作者:腹白,转载请注明原文链接:https:///wyh518/
以上就是双向链表实现思路(双向链表的构造方法)的详细内容,想要了解更多 双向链表实现思路的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。