模拟栈的操作
import java.util.LinkedList;
/*
* 自定义栈
*/
public class MyStack<E> {
// 创建LinkedList对象
private LinkedList<E> link = null;
public MyStack() {
link = new LinkedList<E>();
}
// 压栈
public void push(E e) {
link.addFirst(e);
}
// 弹栈
public E pop() {
return link.removeFirst();
}
// 是否为空
public boolean emptyMyStack() {
return link.size() == 0;
}
}
模拟队列的操作
import java.util.LinkedList;
//这是队列的模拟
public class MyQueue<E> {
LinkedList<E> linkedList = null;
public MyQueue() {
super();
linkedList = new LinkedList<>();
// TODO Auto-generated constructor stub
}
public void in(E e) {
//Appends the specified element to the end of this list.
// 把新的元素添加到最后 ,然后弹出的时候从最前面取出
linkedList.add(e);
}
public E out() {
return linkedList.removeFirst();
}
public boolean isEmpty() {
return linkedList.size() == 0;
}
}
测试代码 :
import java.util.LinkedList;
/*
* 请用LinkedList模拟栈数据结构集合并测试。
* 题目意思:用LinkedList模拟栈数据结构集合,你有一个LinkedList对象,但是对外界你要提供的是一个栈集合类。
*/
public class MyStackAndQueueTest {
public static void main(String[] args) {
//
LinkedList<String> linkedList = new LinkedList<>();
// * Appends the specified element to the end of this list.
// * <p>This method is equivalent to {@link #addLast}.
// 添加到末尾
linkedList.add("hello");
linkedList.add("world");
linkedList.add("java");
// * Inserts the specified element at the beginning of this list.
// 放到最上面
linkedList.addFirst("hello");
linkedList.addFirst("world");
linkedList.addFirst("java");
// * Pushes an element onto the stack represented by this list. In other
// * words, inserts the element at the front of this list.
// 放到最上面
linkedList.push("hello");
linkedList.push("world");
linkedList.push("java");
// for (String string : linkedList) {
// System.out.println(string);
// }
// 呆板的遍历方法
// System.out.println(linkedList.pop());
// System.out.println(linkedList.pop());
// System.out.println(linkedList.pop());
while (!linkedList.isEmpty()) {
String string = linkedList.pop();
System.out.println(string);
}
// 注意此处是错误的做法: java.util.NoSuchElementException
// 因为 我们 每次进行 linkList.pop() 就会pop一个元素 导致 多次pop后越界
// while (linkedList.pop() != null) {
// String string = linkedList.pop();
// System.out.println(string);
// }
System.out.println("-----下面是模拟栈-----");
MyStackOverWrite<String> myStackOverWrite = new MyStackOverWrite<>();
myStackOverWrite.push("wo");
myStackOverWrite.push("ai");
myStackOverWrite.push("xue");
myStackOverWrite.push("xi");
while (!myStackOverWrite.isEmpty()) {
System.out.println(myStackOverWrite.pop());
}
System.out.println("----下面是模拟队列------");
MyQueue<String> myQueue = new MyQueue<>();
myQueue.in("this");
myQueue.in("is");
myQueue.in("a");
myQueue.in("queue");
while (!myQueue.isEmpty()) {
System.out.println(myQueue.out());
}
}
}
打印结果:
// java 这三个打印是Push方法添加进来的 有序
java
world
hello
// java 这三个打印是addFirst方法添加进来的 有序
java
world
hello
这三个打印是上面的add方法添加进来的额是有序的
hello
world
java
-----下面是模拟栈-----
xi
xue
ai
wo
----下面是模拟队列------
this
is
a
queue