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("请选择:");
    }
}

 

 

运行结果:

 

posted @ 2020-12-01 18:13  明霞  阅读(439)  评论(0编辑  收藏  举报