栈的基本操作

栈的两种实现

image

静态栈:数组

动态栈:链表

栈的基本操作

package dataStructure.stack;

import dataStructure.list.ListNode;

/**
 * 栈的基本操作
 */
public class MyStackOperate {

    /**
     * 入栈
     */
    public static void pushStack(MyStack stack, int value){
        //头结点插入一个元素
        ListNode newHead = new ListNode(value);

        newHead.next = stack.stackTop;
        stack.stackTop = newHead;
    }

    /**
     * 是否是空栈
     */
    public static boolean isEmpty(MyStack stack){
        //若头结点和尾结点相等,则是空栈,否则则不是
        return stack.stackTop == stack.stackBottom;
    }

    /**
     * 出栈
     */
    public static void popStack(MyStack stack){
        //若是空栈,则返回
        if(isEmpty(stack)){
           return;
        }

        //若不是,则头结点删除
        System.out.println(stack.stackTop);
        stack.stackTop = stack.stackTop.next;
    }

    /**
     * 清空栈
     */
    public static void clear(MyStack stack){
        stack.stackTop = null;
        stack.stackBottom = stack.stackTop;
    }

    /**
     * 遍历栈
     */
    public static void traverse(MyStack stack){
        ListNode currentNode = stack.stackTop;
        while (currentNode != stack.stackBottom){
            System.out.print(currentNode.value + "  ");

            currentNode = currentNode.next;
        }
        System.out.println();
    }

    public static void main(String[] args) {
        ListNode node1 = new ListNode(0);
        MyStack myStack = new MyStack(node1,node1);

        System.out.println(isEmpty(myStack));//true

        pushStack(myStack,1 );
        pushStack(myStack,2 );
        pushStack(myStack,3 );

        traverse(myStack);//3 2 1

        popStack(myStack);
        traverse(myStack);//2 1
        System.out.println(isEmpty(myStack));//false

        clear(myStack);

        System.out.println(isEmpty(myStack));//true
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容