JAVA 之 栈

以下是自己实现的

  • 栈 主要是 先进后出

  • 栈(Stack)是一个后进先出(Last in first out,LIFO)的线性表,它要求只在表尾进行删除和插入操作。

Stack.png

package com.mylzs.cn.Utils;

import java.util.LinkedList;
![YWA)8LD)LC~(S~@@C]@VZ]K.png](http://upload-images.jianshu.io/upload_images/2783497-ca88f65ad6b01928.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

/**
 * Created by zs on 17/11/8.
 *
 * 栈主要是 后进先出、抓住这个原理、就可以写了
 */
public class MyStack {
  private LinkedList linkedList=new LinkedList();

    /**
     * 进栈
     * @param s
     */
   public void push(S s){
        linkedList.offerFirst(s);
   }

    /**
     * 得到栈顶
     * @return
     */
   public S peek(){
     return   linkedList.peekFirst();
   }

    /**
     * 出栈
     * @return
     */
   public S pop(){

       return  linkedList.pollFirst();
   }

    /**
     * 判断栈 是否为空!
     * @return
     */
   public Boolean isEmpty(){
       return  linkedList.isEmpty();
   }

   
}


  • 栈的运行代码
    public static void main(String[] args) {
        MyStack myStack=new MyStack<>();
        String str="我 和 你";
        System.out.print("进栈之前:");
        System.out.println(str);
        for (String s :
                str.split(" ")) {
            myStack.push(s);
        }
        System.out.print("出栈之后:");
        while (!myStack.isEmpty())
            System.out.print(myStack.pop()+" ");

    }

-运行结果图


结果

  • java Stack源码
public
class Stack extends Vector {
    /**
     * Creates an empty Stack.
     */
    public Stack() {
    }

    /**
     * Pushes an item onto the top of this stack. This has exactly
     * the same effect as:
     * 
     * addElement(item)
* * @param item the item to be pushed onto this stack. * @return the item argument. * @see java.util.Vector#addElement */ public E push(E item) { addElement(item); return item; } /** * Removes the object at the top of this stack and returns that * object as the value of this function. * * @return The object at the top of this stack (the last item * of the Vector object). * @throws EmptyStackException if this stack is empty. */ public synchronized E pop() { E obj; int len = size(); obj = peek(); removeElementAt(len - 1); return obj; } /** * Looks at the object at the top of this stack without removing it * from the stack. * * @return the object at the top of this stack (the last item * of the Vector object). * @throws EmptyStackException if this stack is empty. */ public synchronized E peek() { int len = size(); if (len == 0) throw new EmptyStackException(); return elementAt(len - 1); } /** * Tests if this stack is empty. * * @return true if and only if this stack contains * no items; false otherwise. */ public boolean empty() { return size() == 0; } /** * Returns the 1-based position where an object is on this stack. * If the object o occurs as an item in this stack, this * method returns the distance from the top of the stack of the * occurrence nearest the top of the stack; the topmost item on the * stack is considered to be at distance 1. The equals * method is used to compare o to the * items in this stack. * * @param o the desired object. * @return the 1-based position from the top of the stack where * the object is located; the return value -1 * indicates that the object is not on the stack. */ public synchronized int search(Object o) { int i = lastIndexOf(o); if (i >= 0) { return size() - i; } return -1; } /** use serialVersionUID from JDK 1.0.2 for interoperability */ private static final long serialVersionUID = 1224463164541339165L; }

欢迎加群技术交流234731686

你可能感兴趣的:(JAVA 之 栈)