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

Java数据结构《双向链表》的增删改及其测试

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

Java数据结构《双向链表》的增删改及其测试

package linkedlist;

public class DoublelinkedlistDemo {
    public static void main(String[] args) {
        DoublelinkedList doublelinkedList = new DoublelinkedList();
        doublelinkedList.list();
        doublelinkedList.add(new Node(1,"宋江","及时雨"));
        doublelinkedList.add(new Node(2,"卢俊义","玉麒麟"));
        doublelinkedList.add(new Node(3,"吴用","智多星"));
        doublelinkedList.add(new Node(7,"高俅","足球先生"));
        doublelinkedList.list();
        doublelinkedList.update(new Node(7,"武松","行者"));
        doublelinkedList.list();
        doublelinkedList.update(new Node(8,"武松","行者"));
        doublelinkedList.list();
        doublelinkedList.addNo(new Node(6,"鲁智深","花和尚"));
        doublelinkedList.list();
        doublelinkedList.delete(2);
        doublelinkedList.list();
        doublelinkedList.delete(7);
        doublelinkedList.list();


    }

}
class DoublelinkedList{
    Node headNode = new Node(0,null,null);
//    在链表的最后添加新的节点
    public void add(Node newNode){
        Node temp = headNode;
        while (true){
            if (temp.next==null){
                break;
            }
            temp = temp.next;
        }
        temp.next = newNode;
        newNode.pre = temp;
    }
//    按照no的大小来添加节点
    public void addNo(Node newNode){
        Node temp = headNode;
        boolean flag = false;
//        找到要添加的位置
        while (true){
            if (temp.next==null){
                break;
            }
            if (newNode.no < temp.next.no){
                flag = true;
                break;
            }
            temp = temp.next;
        }
//        插入新的节点
        if (flag){
            newNode.next = temp.next;
            temp.next.pre = newNode;
            temp.next = newNode;
            newNode.pre = temp;
        }else {
            temp.next = newNode;
            newNode.pre = temp;
        }
    }
//    遍历列表,并打印
    public void list(){
        Node temp = headNode;
        while (true){
            if (temp.next==null){
                break;
            }
            temp = temp.next;
            System.out.println(temp);
        }
        if (temp == headNode){
            System.out.println("该列表为空");
        }
    }
//    更新某个节点的数据
    public void update(Node newNode) {
       Node temp = headNode;
        boolean flag = false;
        while (true){
            if (temp.next == null) {
                break;
            }
            if (temp.next.no == newNode.no){
                flag = true;
                break;
            }
            temp = temp.next;
        }
        if (flag){
            temp.next.name = newNode.name;
            temp.next.nickname = newNode.nickname;
        }else {
            System.out.printf("未找到no为%d的成员",newNode.no);
            System.out.println();
        }
    }
//    删除指定no的节点
    public void delete(int no){
        Node temp = headNode.next;
        boolean flag = false;
        while (true){
            if (temp == null) {
                break;
            }
            if (temp.no == no){
                flag = true;
                break;
            }
            temp = temp.next;
        }
        if (flag){
//            防止删除的是最后一个节点,造成空指针异常
            if (temp.next != null) {
                temp.next.pre = temp.pre;
            }
            temp.pre.next = temp.next;
        }else {
            System.out.printf("未找到no为%d的成员",no);
        }
    }
}
class Node{
    int no;
    String name;
    String nickname;
    Node next;
    Node pre;

    public Node(int no, String name, String nickname) {
        this.no = no;
        this.name = name;
        this.nickname = nickname;
        this.next = null;
        this.pre = null;
    }

    @Override
    public String toString() {
        return "Node{" +
                "no=" + no +
                ", name='" + name + ''' +
                ", nickname='" + nickname + ''' +
                '}';
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/704836.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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