在Java中实现队列

时间:2013-03-04 17:25:12

标签: java oop linked-list queue

我只是很好奇,我有一个实现队列的类,它目前有一个项目...我很好奇哪里是最有效或最干净的位置来初始化我希望添加到其他项目队列......这是作业的一部分,所以请提供解释,而不仅仅是回答!提前谢谢......这是我建造的课程......

import java.util.*;

public class Queue<T> extends Node<T> {
    private LinkedList<T> list;

    // Queue constructor
    public Queue()  {
        // Create a new LinkedList.
        list = new LinkedList<T>();
    }
    //check if empty
    public boolean isEmpty() {
        return (list.size() == 0);
    }
    //add items to queue
    public void enqueue(Object item) {
        // Append the item to the end of our linked list.
        list.add((T) item);
    }
    //remove items from queue
    public T dequeue() {

        T item = list.get(1);
        list.remove(1);     
        // Return the item
        return item;
    }
    //check top item
    public T peek() {
        return list.get(1);
    }
    //check size of queue
    public int size() {
        return list.size();
    }
}

1 个答案:

答案 0 :(得分:1)

这是你编写队列的方式:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Queue;

import java.util.*;

/**
 *
 * @author Madhurlucky
 */
public class arrayQueue {

    public static int[] Queue;
    public static int len, front, rear, size;

    public arrayQueue(int n) {
        len = 0;
        size = n;
        front = -1;
        rear = -1;
        Queue = new int[size];
    }

    public boolean isEmpty() {
        return front == -1;
    }

    public boolean isFull() {
        return (front == 0 && rear == size - 1);
    }

    public int getsize() {
        return len;
    }

    public void insert(int i) {
        if (rear == -1) {
            rear = front = 0;
            Queue[rear] = i;
        } else if (rear + 1 >= size) {
            System.out.println("OverFlow Queue");
        } else if (rear + 1 < size) {
            Queue[++rear] = i;
        }
        len++;
    }

    public int remove() {
        int x = -99;
        if (front != -1) {
            x = Queue[front];
            if (front == rear) {
                front = rear = -1;
            } else if (front < rear) {
                front += 1;
            }
            len--;
        }
        return x;
    }

    /*  Function to check the front element of the queue */
    public int peek() {
        if (isEmpty()) {
            throw new NoSuchElementException("Underflow Exception");
        }
        return Queue[front];
    }

    public void display() {
        System.out.print("\nQueue = ");
        if (len == 0) {
            System.out.print("Empty\n");
            return;
        }
        for (int i = front; i <= rear; i++) {
            System.out.print(Queue[i] + " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.println("Array Queue Test\n");
        System.out.println("Enter Size of Integer Queue ");
        int n = scan.nextInt();
        /* creating object of class arrayQueue */
        arrayQueue q = new arrayQueue(n);
        /* Perform Queue Operations */
        char ch;
        do {
            System.out.println("\nQueue Operations");
            System.out.println("1. insert");
            System.out.println("2. remove");
            System.out.println("3. peek");
            System.out.println("4. check empty");
            System.out.println("5. check full");
            System.out.println("6. size");
            int choice = scan.nextInt();
            switch (choice) {
                case 1:
                    System.out.println("Enter integer element to insert");
                    try {
                        q.insert(scan.nextInt());
                    } catch (Exception e) {
                        System.out.println("Error : " + e.getMessage());
                    }
                    break;
                case 2:
                    try {
                        System.out.println("Removed Element = " + q.remove());
                    } catch (Exception e) {
                        System.out.println("Error : " + e.getMessage());
                    }
                    break;
                case 3:
                    try {
                        System.out.println("Peek Element = " + q.peek());
                    } catch (Exception e) {
                        System.out.println("Error : " + e.getMessage());
                    }
                    break;
                case 4:
                    System.out.println("Empty status = " + q.isEmpty());
                    break;
                case 5:
                    System.out.println("Full status = " + q.isFull());
                    break;
                case 6:
                    System.out.println("Size = " + q.getsize());
                    break;
                default:
                    System.out.println("Wrong Entry \n ");
                    break;
            }
            /* display Queue */
            q.display();
            System.out.println("\nDo you want to continue (Type y or n) \n");
            ch = scan.next().charAt(0);

        } while (ch == 'Y' || ch == 'y');
    }
}