zoukankan      html  css  js  c++  java
  • JAVA设计一个基于ArrayList类的队列类,并实现相关操作

    最近写JAVA作业,让我觉得头秃,还是建立一些随笔吧。

    代码要实现的内容如题目所述。

    import java.util.*;
    
    class Queue {
        ArrayList<Object> qlist = new ArrayList<>();
    
        Queue() {
        }
    
        // 元素入队
        public void push(Object o) {
            qlist.add(o);
        }
    
        // 元素出队
        public Object pop() {
            if (qlist != null && qlist.size() > 0) {
                Object o = qlist.get(0);
                qlist.remove(0);
                return o;
            }
            return null;
        }
    
        // 返回队尾元素
        public Object getEnd() {
            return qlist.get(getQSize() - 1);
        }
    
        // 返回队头元素
        public Object getHead() {
            return qlist.get(0);
        }
    
        // 判断队列元素是否为空
        public boolean isQEmpty() {
            return qlist.isEmpty();
        }
    
        // 输出队列内元素个数
        public int getQSize() {
            return qlist == null ? 0 : qlist.size();
        }
    
        // 遍历
        public void traverse() {
            System.out.print("队列为:");
            for (Object o : qlist) {
                System.out.print(o + " ");
            }
            System.out.println();
        }
    }
    
    public class QueueAL {
    
        public static void main(String[] args) {
            Queue q = new Queue();
            Scanner input = new Scanner(System.in);
            display();
            int con = 1;
            do{
                int choice = input.nextInt();
                switch (choice) {
                case 1:
                    System.out.println("请输入要入队的元素:");
                    Integer value = input.nextInt();
                    q.push(value);
                    q.traverse();
                    display();
                    break;
                case 2:
                    if (!q.isQEmpty()) {
                        q.pop();
                        q.traverse();
                    } else
                        System.out.println("队列为空");
                    display();
                    break;
                case 3:
                    System.out.println("队列尾元素为 " + q.getEnd());
                    display();
                    break;
                case 4:
                    System.out.println("队列头元素为 " + q.getHead());
                    display();
                    break;
                case 5:
                    System.out.println("共有 " + q.getQSize() + " 个元素");
                    display();
                    break;
                case 6:
                    if (q.isQEmpty())
                        System.out.println("队列为空!");
                    else
                        System.out.println("队列非空!");
                    display();
                    break;
                case 0:
                    System.exit(0);
                }
            }while(con != 0);    
            input.close();
        }
    
        public static void display() {
            System.out.println("------菜            单---------------");
            System.out.println("------1:入队-------------------------");
            System.out.println("------2:出队-------------------------");
            System.out.println("------3:返回队尾元素-----------------");
            System.out.println("------4:返回队头元素-----------------");
            System.out.println("------5:输出队列内元素个数-----------");
            System.out.println("------6:判断队列中是否为空-----------");
            System.out.println("------0:退出-------------------------");
            System.out.println("请选择:");
        }
    }

    运行结果:

  • 相关阅读:
    嵌入式成长轨迹27 【Linux应用编程强化】【中嵌第二阶段】【进程管理】
    嵌入式成长轨迹24【Linux应用编程强化】【Linux下的C编程 下】【实例:Linux命令实现】
    纯CSS代码实现翻页
    Adodb.Stream读取和写入UTF8编码的文件
    对c#拆装箱的性能分析(泛型)
    js自动更换图片代码(收藏)
    提高网站可用性的10个小技巧
    分享下我的家乡语言——湘潭话
    解析用户研究
    HTML5 搭建移动Web应用
  • 原文地址:https://www.cnblogs.com/RootVount/p/14069909.html
Copyright © 2011-2022 走看看