数据结构和算法-006 堆栈

堆栈,都懂得。先进后出。直接看代码吧,实现以下功能:

创建堆栈

压入值

弹出值

查看栈顶值

压入一组值

public class TheStack {
    
    private String [] stackArray;
    
    private int stackSize;
    
    private int topOfStack = -1;
    
    TheStack(int size){
        stackSize = size;    
        stackArray = new String[size];
        Arrays.fill(stackArray, "-1");
    }
    
    public void printStack(){
        
        StringBuffer sb = new StringBuffer("-");
        for (int i = 0; i<stackSize; i++){
            sb.append("-----");
        }
        
        String septalLine= sb.toString();
        
        System.out.println(septalLine);
        for (int i = 0; i<stackSize; i++){
            System.out.print("|  " + i + " ");
        }
        System.out.println("|");
        System.out.println(septalLine);
        for (int i = 0; i<stackSize; i++){
            if(stackArray[i].equals("-1"))
                System.out.print("|    ");
            else
             System.out.print("| " + stackArray[i] + " ");
        }
        System.out.println("|");
        System.out.println(septalLine);
    }
    
    public void push(String input){
        if(topOfStack+1<stackSize){
            topOfStack++;
            stackArray[topOfStack] = input;        
        } else System.out.println("The stack is full");
    }
    
    public String pop(){
        if (topOfStack>=0){
            stackArray[topOfStack]="-1";
            return stackArray[topOfStack--];
        } else {
            System.out.println("Stack is Empty");
            return "-1";
        }
    }
    
    public String peek(){
        if(topOfStack >=0){
            return stackArray[topOfStack];
        }else {
            System.out.println("Stack is Empty");
            return "-1";
        }
    }
    
    public void pushMany(String multipleValue){
        String [] manyValues = multipleValue.split(" ");
        for(int i =0; i<manyValues.length; i++){
            push(manyValues[i]);
        }
    }

    public static void main(String[] args) {
        System.out.println("Create a Stack");
        TheStack stack = new TheStack(10);
        stack.printStack();
        System.out.println();
        
        System.out.println("Push first value 10");
        stack.push("10");
        stack.printStack();
        System.out.println();
        
        System.out.println("Push Second value 11");
        stack.push("11");
        stack.printStack();
        System.out.println();
        
        System.out.println("Pop top value in the stack");
        System.out.println("The value popped up is: " + stack.pop());
        stack.printStack();
        System.out.println();
        
        System.out.println("Peek top value in the stack");
        System.out.println("The value is " + stack.peek());
        stack.printStack();
        System.out.println();

        System.out.println("Push a couple of values in the stack");
        stack.pushMany("12 14 54 56 43");
        stack.printStack();
        System.out.println();
    }

}

输出结果

Create a Stack
---------------------------------------------------
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |
---------------------------------------------------
|    |    |    |    |    |    |    |    |    |    |
---------------------------------------------------

Push first value 10
---------------------------------------------------
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |
---------------------------------------------------
| 10 |    |    |    |    |    |    |    |    |    |
---------------------------------------------------

Push Second value 11
---------------------------------------------------
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |
---------------------------------------------------
| 10 | 11 |    |    |    |    |    |    |    |    |
---------------------------------------------------

Pop top value in the stack
The value popped up is: -1
---------------------------------------------------
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |
---------------------------------------------------
| 10 |    |    |    |    |    |    |    |    |    |
---------------------------------------------------

Peek top value in the stack
The value is 10
---------------------------------------------------
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |
---------------------------------------------------
| 10 |    |    |    |    |    |    |    |    |    |
---------------------------------------------------

Push a couple of values in the stack
---------------------------------------------------
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |
---------------------------------------------------
| 10 | 12 | 14 | 54 | 56 | 43 |    |    |    |    |
---------------------------------------------------
时间: 2024-10-11 03:25:30

数据结构和算法-006 堆栈的相关文章

数据结构与算法问题 堆栈使用 2011年吉林大学计算机研究生机试真题

题目描述: 堆栈是一种基本的数据结构.堆栈具有两种基本操作方式,push 和 pop.Push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出.现在我们就来验证一下堆栈的使用. 输入: 对于每组测试数据,第一行是一个正整数 n,0<n<=10000(n=0 结束).而后的 n 行,每行的第一个字符可能是'P'或者'O'或者'A':如果是'P',后面还会跟着一个整数,表示把这个数据压入堆栈:如果是'O',表示将栈顶的值 pop 出来,如果堆栈中没有元素时,忽略本次操作:如果是'A',表示询问

数据结构与算法2-4 堆栈链式存储

链表中,只有一端进行插入与删除 在表头的位置,以避免需要知道实际数据长度 结构: typedef struct Node() { ElementType data; struct node *Next; }List; List *Ptrl; 构造: List *empty() { List *Ptrl; Ptrl=(List *)malloc(sizeof(List)); Ptrl->Next=NULL; return Ptrl; } 判断是否是空表 int isEmpty(List *Ptrl

Pascal数据结构与算法

第一章 数据结构与算法的引入 1.1 数据结构的基本概念 一. 学习数据结构的意义 程序设计 = 数据结构 + 算法 目前,80%的待处理的数据具有“算法简单”(四则运算.检索.排序等),“对象复杂”(数据类型不同.数据量大.需要保存)等特点,故合理组织数据.选择较好的数据结构可为高效算法(时间少.占用空间小)提供理想的对象. 二.基本术语 1.数据(data): 是对客观事物的符号的表示,是所有能输入到计算机中并被计算机程序处理的符号的总称.(P1表1-1中,学号.姓名.性别.民族等列为字符型

Java数据结构与算法之集合

线性表.链表.哈希表是常用的数据结构,在进行Java开发时,SDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中. 一.Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object.一些Collection允许相同元素而另一些不行.一些能排序而另一些不行.Java  SDK不提供直接继承自Collection的类,Java  SDK提供的类都是继承自Collection的"子接口"如List和Set

Java数据结构和算法(一)——开篇

这篇文章里面不讲技术,抽空讲讲技术和通俗之间有一种奇特的关系,还有驱动力学习的东西. 1)技术与通俗 大学里面那本严蔚敏的数据结构不厚,内容丰富,但是复杂问题的讲解方面篇幅这样就少了,比较难理解,c也不是很擅长,但是基本的思路还是有的. 简单的链表,数组,堆栈,队列,图,几个排序算法. 后面看到知乎涛吴的回答,当时很震撼,这里引用一下他的回答: 如果说 Java 是自动档轿车,C 就是手动档吉普.数据结构呢?是变速箱的工作原理.你完全可以不知道变速箱怎样工作,就把自动档的车子从 A 开到 B,而

数据结构与算法-----队列篇

队列 1.基本特征:先进先出 2.基本操作:从后端(rear)压入(push),从前端(front)弹出(pop) 3.实现要点:初始化空间.从后端指针压入,从前端指针弹出, 循环使用,判空判满 实践1 :使用C++语言实现队列类并进行数据示例演示 #include <iostream> using namespace std; class Queue { public: // 构造函数中分配内存空间 Queue (size_t size) : m_data (new int[size]),

[py]数据结构和算法

数据结构和算法可以培养一个人的逻辑思维(推荐几本书) 逻辑思维培养 严蔚敏的数据结构(排序 查找 列表 堆栈 队列 树的简单部分) 大话数据结构 数据结构与算法分析 (豆瓣) 9.2分 算法 (豆瓣) 9.3分 算法导论 (豆瓣) 9.4分 等差数列 (首项+尾项) * (项数的一半) 原文地址:https://www.cnblogs.com/iiiiiher/p/8207068.html

数据结构,算法宏观印象构建

前言 这篇文章主要是鸟瞰数据结构和算法,不涉及到具体的细节. 阐述逻辑通过黄金思维圈中的是什么,为什么展开. 内容包括: 什么是数据结构 为什么需要需要数据结构 数据结构分类 什么是算法 为什么需要算法 算法的衡量标准 关于数据结构 什么是数据结构? 逻辑结构:描述数据之间的关系 物理结构:描述数据存储的方式 为什么需要数据结构? 以有效的方式处理数据,主要体现在存储和检索方面. 数据结构的分类 逻辑结构 1,集合结构 例如一个集合中包含橘子,苹果和香蕉. 集合具有三大特性: 唯一性 互斥性 无

Datawhale 数据结构与算法

Datawhale 数据结构与算法 1数组 数组是一种常用的数据结构 可以看作是线性表的推广 数据元素多样,但必须属于同一数据类型 1.1 逻辑结构 数组是n(N>=1)个相同数据类型的数据元素的有限序列: 数组是具有固定格式和数量的数据有序集: 注意:在数据上不能进行插入.删除数据元素等操作 数组的操作: 取值:读取给定一组下标对应的数据元素 赋值:存储或修改给定一组下标对应的数据元素 清空 复制 排序:数据元素排序(元素为可排序) 反转:反转元素顺序 1.2 内存映像 数组是一种随机存储结构