LinkList模拟栈的操作以及模拟队列的操作

来源:互联网 发布:知画的真名 编辑:程序博客网 时间:2024/06/06 22:40

模拟栈的操作

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



0 0
原创粉丝点击