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

java队列实现

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

java队列实现

public class SinglelinkQueueDemo {

    public static void main(String[] args) {
        SinglelinkQueue queue = new SinglelinkQueue();
        AllianceNode node1 = new AllianceNode(1, "压缩");
        AllianceNode node2 = new AllianceNode(2, "永恩");
        AllianceNode node6 = new AllianceNode(6, "刀妹");
        AllianceNode node3 = new AllianceNode(3, "老鼠");
        queue.add(node1);
        queue.add(node2);
        queue.show();
        System.out.println("执行insert测试:");
        queue.insert(node6);
        queue.insert(node3);
        queue.show();
        System.out.println("执行update测试:");
        AllianceNode node61 = new AllianceNode(6, "刀妹厉害");
        queue.update(node61);
        queue.show();
        System.out.println("执行delete测试:");
        queue.delete(2);
        queue.show();
        System.out.println("执行队列反转测试:");
        queue.reverseShow(queue.getHead());
        queue.show();


    }
}

    
     class AllianceNode{
        public int id;
        public String name;
        public AllianceNode next;  // 指向下一个节点的指针

       public AllianceNode(int id,String name){
            this.id = id;
            this.name = name;
        }


        @Override
        public String toString() {
            return "AllianceNode{" +
                    "id=" + id +
                    ", name='" + name +
                    '}';
        }
    }

    class SinglelinkQueue{
        // 定义头节点
       private AllianceNode head= new AllianceNode(0,"");

        public AllianceNode getHead() {
            return head;
        }

        public void setHead(AllianceNode head) {
            this.head = head;
        }

        // 添加链表数据
        public void add(AllianceNode node){
            // 定义一个临时变量temp,使其指向链表尾部,然后将node放入next
            AllianceNode temp = head;
            while (true){
                if (temp.next==null){
                    temp.next = node;
                    break;
                }
                temp = temp.next;
            }
        }
        public void show(){
            if (head.next==null){
                System.out.println("链表为空");
                return;
            }
            AllianceNode temp = head.next;
            while (true){
                if (temp==null){
                    break;
                }
                System.out.println(temp);
                temp = temp.next;
            }
        }
        // 插入
        public void insert(AllianceNode allianceNode){
            AllianceNode node = head;
           while (true){
               if (node.next==null){
                   node.next = allianceNode;
                   break;
               }
               if (node.next.id>allianceNode.id){
                   allianceNode.next= node.next;
                   node.next=allianceNode;
                   break;
               }
               if (node.next.id==allianceNode.id){
                   System.out.println("id已存在");
                   break;
               }
               node =node.next;
           }
        }

        // 修改
        public void update(AllianceNode allianceNode){
            AllianceNode temp = head;
            while (true){
                if (temp==null){
                    break;
                }
                if (allianceNode.id==temp.id){
                    temp.name = allianceNode.name;;
                }
                temp = temp.next;
            }
        }
        // 删除
        public void delete(int id){
            AllianceNode temp= head;
            while (true){
                if (temp.next==null){
                    System.out.println("未找到元素");
                    break;
                }
                if (id==temp.next.id){
                    temp.next = temp.next.next;
                    break;
                }
                temp =temp.next;
            }
        }

        
        // 队列反转
        public void reverseShow(AllianceNode node){

            if (node.next==null || node.next.next==null){
                return;
            }

            AllianceNode cur = node.next;
            AllianceNode nextValue = null;
            AllianceNode head = new AllianceNode(0,"");

            while (cur!=null){
                nextValue = cur.next;   // 指针后移
                cur.next = head.next;   // 将head尾部所有节点放到cur的下一个节点中
                head.next = cur;        // 将cur放入head的头节点的末尾
                cur = nextValue;        // 将cur指针后移
            }
            node.next = head.next;      // 将反转队列返回到原队列中

        }

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

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

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