package com.example.datastruct;
import java.util.Arrays;
public class LinkQueue<T> {
Node<T> head;
Node<T> tail;
int mSize;
public boolean addNode(Node<T> node){
if (node == null) {
return false;
}
if (head == null){
head = node;
tail = head;
}else {
tail.next = node;
tail = tail.next;
}
mSize++;
return true;
}
public Node popNode() throws Exception{
if(mSize == 0){
throw new Exception();
}
Node currentNode = head;
head = head.next;
mSize--;
return currentNode;
}
public int getSize(){
return mSize;
}
public boolean isEmpty(){
return mSize == 0 ? true:false;
}
}
class ArrayQueue<T>{
int mHead;
int mSize;
int max;
T data[];
public ArrayQueue(int max) {
data = (T[]) new Object[max];
this.max = max;
}
public int getSize(){
return mSize;
}
public boolean isEmpty(){
return mSize == 0 ? true:false;
}
public boolean addNode(Node<T> node){
if (node == null) {
return false;
}
if(mSize == max){
data = Arrays.copyOf(data, max * 2);
max *= 2;
}
data[mSize++] = (T) node;
mSize++;
return true;
}
public Node popNode() throws Exception{
if(mSize == 0){
throw new Exception();
}
Node currentNode = (Node) data[mHead];
mHead++;
return currentNode;
}
}
class Node<T>{
int data;
Node<T> next;
public Node(int data) {
super();
this.data = data;
}
public Node() {
// TODO Auto-generated constructor stub
}
}