day14

Day14

1. Background

今天是学习java的第十四天了,今天学习的是栈的基础知识。

主要是栈的结构以及删除和增加操作。

2. Description

2.1 Stack

我对栈的理解,就是一个像杯子容器,具有后进先出的特性。

数据只能从开口进来,从开口出去,而且,栈必须让上面的数据先出去后,下面额数据才能出去。

2.2 Push

这是往栈里面增加元素,这个操作的逻辑还是很好理解的。

先检查栈里面的元素满了没有,满了的话,就返回false,并说此栈已满。

如果栈中还有空位,则往其中加入给定数据,并把depth的数值加一。

2.3 Pop

往栈中删除元素则与增加元素同理,先检查栈是否为空,若为空,则返回false。

若不为空,则直接返回depth处的数据,并将depth减一即可。

3. Code

package datastructure;

public class CharStack {
    /**
     * The depth.
     */
    public static final int MAX_DEPTH = 10;

    /**
     * The actual depth.
     */
    int depth;

    /**
     * The data.
     */
    char[] data;

    /**
     * Construct an empty char stack.
     */
    public CharStack() {
        depth = 0;
        data = new char[MAX_DEPTH];
    } // Of the first constructor

    public String toString() {
        String resultString = "";

        for (int i = 0; i < depth; i++) {
            resultString += data[i];
        } // Of for i

        return resultString;
    } // Of toString

    /**
     *************
     * Push an element.
     * @param paraChar The given element.
     * @return Success or not.
     * ************
     */
    public boolean Push(char paraChar) {
        if (depth == MAX_DEPTH) {
            System.out.println("Stack full");
            return false;
        }

        data[depth] = paraChar;
        depth++;

        return true;
    } // Of Push

    /**
     *************
     * Pop an element.
     * @return The poped char.
     * ************
     */
    public char Pop() {
        if (depth == 0) {
            System.out.println("Nothing to pop");
            return '\0';
        } // Of if

        char resultChar = data[depth - 1];
        depth--;

        return resultChar;
    } // Of Pop

    /**
     * The entrance of program.
     * 
     * @param args Not used now.
     */
    public static void main(String[] args) {
        CharStack tempStack = new CharStack();

        for (char i = 'a'; i < 'm'; i++) {
            tempStack.Push(i);
            System.out.println("The stack is: " + tempStack);
        } // Of for i

        char tempChar;
        for (int i = 0; i < 12; i++) {
            tempChar = tempStack.Pop();
            System.out.println("Poped : " + tempChar);
            System.out.println("The stack is: " + tempStack);
        } // Of for i
    } // Of main
} // Of CharStack

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值