0

I am just curious, i have a class that implements a queue and it currently has one item... I am curious as to where would be the most efficient or cleanest location to initialize other items that i wish to add to the queue... This is part of an assignment so please provide an explanation and not just answer! thanks in advance... Here is the class i built...

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();
    }
}
8
  • 1
    What are your thoughts on the matter?? Commented Mar 4, 2013 at 17:27
  • 4
    Why Object instead of T everywhere? Commented Mar 4, 2013 at 17:27
  • 1
    Are you sure you can use a LinkedList to manipulate your queue? It is basically a wrapper, probably your professor won't accept it. Commented Mar 4, 2013 at 17:28
  • IMO: Why Queue extends Node? The Queue should be based on a linked list of Node. Commented Mar 4, 2013 at 17:28
  • @HotLicks initialize them under the queue initialization? Commented Mar 4, 2013 at 17:29

1 Answer 1

1

This is how you write a queue:

/*
 * 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');
    }
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.