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

模拟栈的操作



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



你可能感兴趣的:(LinkList模拟栈的操作以及模拟队列的操作)