栈类
1 public class MyStack<T> { 2 //栈的大小 3 private int size; 4 //存放栈的数组 5 private Object[] data; 6 7 /** 8 * 无参构造方法,初始化数组大小 9 */ 10 public MyStack() { 11 size = -1; 12 data = new Object[10]; 13 } 14 15 /** 16 * 有参构造方法,自定义数组大小 17 */ 18 public MyStack(int len) { 19 size = 0; 20 if(len < 0) { 21 len = 5; 22 } 23 data = new Object[len]; 24 } 25 26 /** 27 * 出栈 28 * @param t 29 * @return 30 */ 31 public boolean push(T t) { 32 if(size == data.length) { 33 return false; 34 }else { 35 data[++size] = t; 36 return true; 37 } 38 } 39 40 /** 41 * 入栈 42 * @return 43 */ 44 public T pop() { 45 if(size == data.length) { 46 return null; 47 }else { 48 return (T) data[size--]; 49 } 50 } 51 52 /** 53 * 查看栈顶元素 54 * @return 55 */ 56 public T peek() { 57 if(size == data.length) { 58 return null; 59 }else { 60 return (T) data[size]; 61 } 62 } 63 64 /** 65 * 查看数组大小 66 * @return 67 */ 68 public int size() { 69 return size; 70 }
队列类
1 public class MyQueue<T> { 2 //存放队列的数组 3 private Object[] data; 4 5 /** 6 * 无参构造方法,初始化数组大小 7 */ 8 public MyQueue() { 9 data = new Object[0]; 10 } 11 12 //入队 13 public void add(T t) { 14 // 创建一个新的数组 15 Object[] newArr = new Object[data.length + 1]; 16 // 把原数组中的元素复制到新数组中 17 for (int i = 0; i < data.length; i++) { 18 newArr[i] = data[i]; 19 } 20 // 把添加的元素放入新数组中 21 newArr[data.length] = t; 22 // 使用新数组替换旧数组 23 data = newArr; 24 } 25 26 //出队 27 public T poll() { 28 //把数组中的第0个元素取出来 29 T element = (T) data[0]; 30 //创建一个新的数组 31 Object[] newArr = new Object[data.length - 1]; 32 //复制原数组中的元素到新数组中 33 for(int i = 0; i < newArr.length;i++) { 34 newArr[i] = data[i + 1]; 35 } 36 //替换数组 37 data=newArr; 38 return element; 39 } 40 41 //判断队列是否为空 42 public boolean isEmpty() { 43 return data.length == 0; 44 } 45 46 /** 47 * 查看数组大小 48 * @return 49 */ 50 public int size() { 51 return data.length; 52 }