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

队列实现及其操作java版

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

队列实现及其操作java版

队列实现及其操作java版 静态队列–循环队列

未完成,出现无法出队及最后一个元素无法显示的bug

package 数据结构.队列;



class Queue_arr {
    private int[] arr;  //构造队列体
    private int front;  //构造头指针——指向队列第一个数
    private int rear;  //构造尾指针——指向队列最后一个数

    Queue_arr(int queue_max) {
        this.arr = new int[queue_max];
        this.front = 0;//初始化,头指针指向数组第一个空间
        this.rear = 0;//初始化,尾指针指向数组第一个空间
    }

    //入队
    void In_queue(int x) {
        //先判断队列是否已满
        if (front != (rear + 1) % arr.length) {
            arr[rear] = x;
            rear = (rear + 1) % arr.length;
        } else {
            System.out.println("队列已满");
        }
    }

    //出队
    int Out_queue() {
        //先判断队列是否不为空
        if (front == rear) {
            int res = arr[front];
            front = (front + 1) % arr.length;
            return res;
        } else {
            System.out.println("队列为空");
            return -1;
        }
    }

    //打印
    void print_queue() {
        //三种情况:frontrear——出现循环
        //1.front rear——有循环,分开遍历
        } else if (front > rear) {
            //先遍历front到末端的值
            System.out.print("队列数据为:");
            for (int i = front; i < arr.length; i++) {//注意端点取值
                System.out.print(arr[i]);
                System.out.print(' ');
            }
            //在遍历rear到front(不含)的值
            for (int i = rear; i < front; i++) {//注意端点取值
                System.out.print(arr[i]);
                System.out.print(' ');
            }
            System.out.println();
        }

    }

}

public class 静态队列 {
    public static void main(String[] args) {
        Queue_arr A = new Queue_arr(3);
        A.In_queue(10);
        A.In_queue(50);
        A.In_queue(30);
        A.print_queue();
        A.In_queue(10);
        int x = A.Out_queue();
        System.out.println(x);
    }
}
链式队列

已实现队列功能

package 数据结构.队列;




//构造节点
class link {
    int content;
    link next;

    //构造器
    link(int content) {
        this.content = content;
        this.next = null;//这句可以不用写,没有赋值时next本身就是null
    }
}

class Queue{
    //指针设置
    link front;//头指针
    link rear;//尾指针

    //初始化,无需头结点-头指针代替头结点功能,不过要在队列为空入队时要先将头指针尾指针先指向新节点
    Queue(){
        front = null;
        rear = null;
    }

    //入队-修改尾节点,修改尾指针
    void In_Queue(int x){
        //创建新节点
        link new_link = new link(x);

        //判断是否为空队列,是则将头指针尾指针先指向新节点
        if (front == null) {
            front = new_link;
            rear = new_link;
        }else {
            //修改尾节点
            rear.next = new_link;
            //修改尾指针
            rear = new_link;
        }


    }

    //出队-头指针下移,返回首节点
    int Out_Queue(){
        //先判断有无节点
        if (front != null) {
            //缓存首节点内容
            int l = front.content;
            //头指针下移
            front = front.next;
            //返回首节点内容
            return l;
        }else {
            System.out.println("队列为空");
            return -1;
        }

    }
    //显示
    void print_Queue(){
        //定义遍历指针
        link team = front;
        //循环取数据打印,当遍历指针为空时结束循环
        System.out.print("队列中数据为:");
        while (team!=null){
            System.out.print(team.content);
            System.out.print(" ");
            team = team.next;
        }
        System.out.println();
        return;
    }
}

public class 链式队列 {
    public static void main(String[] args) {
        //新建队列
        Queue queue = new Queue();
        //入队
        queue.In_Queue(10);
        //显示
        queue.print_Queue();
        //入队
        queue.In_Queue(20);
        //显示
        queue.print_Queue();
        //出队
        int i = queue.Out_Queue();
        System.out.println(i);
        queue.print_Queue();
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/632342.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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