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
- LinkList模拟栈的操作以及模拟队列的操作
- 使用两个栈模拟队列的操作
- 使用栈来模拟队列的操作
- 两个队列模拟栈的操作(stl实现)
- 002使用两个栈模拟队列的基本操作
- 用集合模拟栈,队列的基本操作
- 士兵队列操作模拟
- 全局变量模拟栈的操作
- js模拟栈的操作
- 模拟二进制的"|" "&"操作
- 时间的模拟操作
- jQuery的模拟操作
- 【HDU1571】【有删除操作的队列模拟】下沙小面的(1)
- 用两个栈模拟队列操作
- 如何用两个栈模拟队列操作
- 简单的栈操作的模拟,入栈出栈
- 多线程操作--模拟二维码的扫描以及定期存储
- 【栈】数组模拟栈的操作
- hive窗口函数理解加实践
- iOS 下实际网络连接状态
- 出差教训
- 仿QQ音乐代码
- 网络问题勘查
- LinkList模拟栈的操作以及模拟队列的操作
- 线程、进程、多线程
- 初学Jquery easyui后台框架基础所了解的知识和注意要点
- Android Studio首次运行卡在Fetching android SDK compoment information
- DDOS--SYN Flood攻击与防御
- hdu:4035Maze
- Class类结构
- 求组合数模板
- 2016.3.3