用List实现栈和队列
转载
blog.csdn.net/qq_25134989…
1) Stack是栈。它的特性是:先进后出(FILO, First In Last Out)。
LinkedList实现栈
package com.ces.collection;
import java.util.EmptyStackException;
import java.util.LinkedList;
public class MyStack {
private LinkedList<Object> li=new LinkedList<Object>();
//1构造方法
public MyStack(){
}
//2出栈
public Object pop(){
if(isEmpty()){
throw new EmptyStackException();
}
return li.removeFirst();
}
//3进栈
public void push(Object obj){ //注意o不要0的区别,不要写成0了
li.addFirst(obj);
}
//4清空
public void clear() {
li.clear();
}
//5判断是否为空
public boolean isEmpty(){
return li.isEmpty();
}
//6 将对象转换成字符串
public String toString(){
return li.toString();
}
//7返回栈口元素
public Object peek(){
if(isEmpty()){
throw new EmptyStackException();
}
return li.peekFirst();
}
public static void main(String[] args) {
MyStack stack=new MyStack();
//进栈
stack.push("a");
stack.push("b");
//出栈
System.out.println(stack.pop());
//返回栈口元素
System.out.println(stack.peek());
}
}
2) 队列:是先进先出(FIFO,First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。
LinkedList实现队列
package com.ces.collection;
import java.util.EmptyStackException;
import java.util.LinkedList;
//借助LinkedList 类中的方法实现队列
public class MyQueue {
private LinkedList<Object> li = new LinkedList<Object>();
// 1构造方法
public MyQueue() {
}
// 2出列
public Object get() {
if (isEmpty()) {
throw new EmptyStackException();
}
return li.removeFirst();
}
// 3进列
public void put(Object obj) {
li.addLast(obj);
}
// 4清空
public void clear() {
li.clear();
}
// 5 返回队列首元素(不删除)
public Object getTop() {
if (isEmpty()) {
throw new EmptyStackException();
}
return li.peekFirst();
}
// 6将对象转换成字符串
public String toString() {
return li.toString();
}
// 7判断队列是否为空
public boolean isEmpty() {
return li.isEmpty();
}
public static void main(String[] args) {
MyQueue mq = new MyQueue();
// 进列
mq.put("a");
mq.put("b");
mq.put("c");
// 出列
System.out.println(mq.get());
System.out.println(mq.get());
// 返回对首元素
System.out.println(mq.getTop());
}
}