栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据结构与算法-双向链表

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构与算法-双向链表

package linkedlist;


public class DoublelinkedListDemo {

    public static void main(String[] args) {
        DoublelinkedList linkedList = new DoublelinkedList();
        Node node1 = new Node(1, "宋江", "及时雨");
        Node node2 = new Node(2, "卢俊义", "玉麒麟");
        Node node3 = new Node(3, "吴用", "智多星");
        Node node4 = new Node(4, "林冲", "豹子头");
        linkedList.add(node1);
        linkedList.add(node2);
        linkedList.add(node3);
        linkedList.add(node4);

        System.out.println("修改前的链表:");
        linkedList.list();


        linkedList.update(new Node(1, "boss", "及时雨"));
        System.out.println("修改后的链表:");
        linkedList.list();

        linkedList.delete(4);
        System.out.println("删除后的链表:");
        linkedList.list();

    }

    static class DoublelinkedList {
        
        private final Node headNode = new Node(0, "", "");

        
        public void add(Node node) {
            Node temp = headNode;
            while (temp.next != null) {
                temp = temp.next;
            }
            temp.next = node;
            node.pre = temp;
        }


        
        public void update(Node node) {
            Node temp = headNode.next;
            boolean isExit = false;
            while (true) {
                //遍历到最后一个节点了
                if (temp == null) {
                    break;
                }
                //如果找到该节点
                if (temp.number == node.number) {
                    isExit = true;
                    break;
                }
                temp = temp.next;
            }

            if (isExit) {
                temp.name = node.name;
                temp.nickName = node.nickName;
            } else {
                System.out.printf("没有找到编号为 %d 的节点 n", node.number);
            }

        }

        
        public void delete(int index) {
            Node temp = headNode.next;
            boolean isExit = false;
            while (true) {
                //遍历到最后一个节点了
                if (temp == null) {
                    break;
                }
                //如果找到该节点
                if (temp.number == index) {
                    isExit = true;
                    break;
                }
                temp = temp.next;
            }

            if (isExit) {
                temp.pre.next = temp.next;
                //注意删除的节点是最后一个节点时
                if (temp.next != null) {
                    temp.next.pre = temp.pre;
                }
            } else {
                System.out.println("没有找到节点");
            }
        }

        
        public void list() {
            if (headNode.next == null) {
                System.out.println("空链表");
                return;
            }
            Node temp = headNode.next;
            while (temp != null) {
                System.out.println(temp);
                temp = temp.next;
            }

        }

    }

    
    static class Node {
        
        public int number;
        
        public String name;
        
        public String nickName;
        
        public Node next;

        
        public Node pre;

        public Node(int number, String name, String nickName) {
            this.number = number;
            this.name = name;
            this.nickName = nickName;
        }

        @Override
        public String toString() {
            return "Node{" +
                    "number=" + number +
                    ", name='" + name + ''' +
                    ", nickName='" + nickName + ''' +
                    '}';
        }
    }


}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/684478.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号