队列(Queue)是限定所有的插入只能在表的一端进行,而所有的删除都在表的另一端进行的线性表。 表中允许插入的一端称为队尾(Rear),允许删除的一端称为队头(Front)。按先进先出(FIFO)的原则进行的。
ArrayList的方式实现队列:
/** * Created with IntelliJ IDEA. * User: lida * Date: 2018/6/6 * ArrayList的方式实现队列
*/ public class MyQueue { private ArrayListlist = new ArrayList(); //入队 public void push(Object o){ list.add(o); } //出队 public void pop(){ Object o=null; if(!list.isEmpty()){ for (Objectobj : list) { System.out.println(obj); } }else{ return; } } //获取队列长度 public int getMyQueueLength(){ return list.size(); } //判断队列是否未空 public boolean isMyQueueEmpty(){ return list.isEmpty(); } public static void main(String[] args) { MyQueue myQueue=new MyQueue(); myQueue.push("1"); myQueue.push("2"); myQueue.push("3"); myQueue.pop(); } }
LinkedList的方式实现队列:
/** * Created with IntelliJ IDEA. * User: lida * Date: 2018/6/6 * linkedList的方式实现队列 */ public class MyQueue { LinkedList<Object> linkedList=new LinkedList<Object>(); //入队 public void push(Object o){ linkedList.addLast(o); } //出队 public Object pop(){ return linkedList.removeFirst(); } public Objectpeek(){ return linkedList.getFirst(); } //判断队列是否未空 public boolean isMyQueueEmpty(){ return linkedList.isEmpty(); } public static void main(String[] args) { MyQueue myQueue=new MyQueue(); myQueue.push("1"); myQueue.push("2"); myQueue.push("3"); myQueue.pop(); System.out.println(myQueue.peek()); System.out.println(myQueue.isMyQueueEmpty()); } }
栈(Stack)也是一种特殊的线性表,是一种后进先出(LIFO)的结构。 栈是限定仅在表尾进行插入和删除运算的线性表,表尾称为栈顶(top),表头称为栈底(bottom)。
用LinkedList实现堆栈
/** * Created with IntelliJ IDEA. * User: lida * Date: 2018/6/6 * To change this template use File |Settings | File Templates. */ public class MyStack { LinkedList<Object> linkedList=new LinkedList<Object>(); //入栈 public void push(Object o){ linkedList.add(o); } //出栈 public Object pop(){ return linkedList.remove(); } //查看栈顶元素 public Object peek(){ return linkedList.getFirst(); } //判断是否为空 public boolean isMyStackEmpty(){ return linkedList.isEmpty(); } public static void main(String[] args) { MyStack myStack=new MyStack(); myStack.push("1"); myStack.push("2"); myStack.push("3"); myStack.push("4"); System.out.println(myStack.peek()); myStack.pop(); System.out.println(myStack.peek()); myStack.pop(); myStack.pop(); myStack.pop(); System.out.println(myStack.isMyStackEmpty()); } }
用ArrayList实现堆栈
/** * Created with IntelliJ IDEA. * User: lida * Date: 2018/6/6 * To change this template use File |Settings | File Templates. */ public class MyStack { private ArrayListlist=new ArrayList(); //入栈 public void push(Object o){ list.add(o); } //出栈 public void pop(){ Object o=null; if(!list.isEmpty()){ o=list.get(list.size()-1); System.out.println(o); list.remove(o); }else{ return; } } //判断是否为空 public boolean isMyStackEmpty(){ return list.isEmpty(); } public static void main(String[] args) { MyStack myStack=new MyStack(); myStack.push("1"); myStack.push("2"); myStack.push("3"); myStack.push("4"); //myStack.pop();//输出一个 while (!myStack.isMyStackEmpty()){ myStack.pop();//输出全部 } System.out.println(myStack.isMyStackEmpty()); } }