`
pxuxian
  • 浏览: 5940 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用数组实现栈 MyStack

阅读更多
import java.util.ArrayList;
import java.util.List;

public class MyStack<V> {

    private List<V> stack = new ArrayList<V>();
    private int top = -1;

    public boolean isEmpty() {
        return top < 0;
    }

    public void push(V v) {
        top++;
        if (stack.size() > top) {
            stack.set(top, v);
        }
        stack.add(v);
    }

    public V pop() {
        if (isEmpty()) {
            return null;
        }
        return stack.get(top--);
    }

    public static void main(String[] args) {
        MyStack<String> stack = new MyStack<String>();
        stack.push("a");
        stack.push("b");
        stack.push("c");

        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack.pop());

        stack.push("d");
        stack.push("e");
        stack.push("f");

        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack.pop());
    }
}

分享到:
评论

相关推荐

    基于动态数组的栈

    使用动态数组实现栈 以下是一个简单的动态数组栈实现: ```cpp #include class MyStack { private: int* arr; // 动态数组 int capacity; // 当前容量 int size; // 当前元素个数 public: // 构造函数 ...

    栈的数组实现

    在数组实现栈时,我们可以定义一个数组来保存栈中的元素,并维护两个变量:一个表示栈顶元素的索引(top),另一个表示栈的容量(capacity)。当元素入栈(push)时,我们将元素添加到top指向的位置,并更新top;当...

    MyStack c#实现栈类

    在`MyStack`类中,我们使用一个泛型数组`items`来存储元素,`top`变量用于跟踪栈顶元素的索引。构造函数接收一个容量参数,初始化数组和`top`值。 接下来,我们需要实现基本的栈操作: 1. **压栈(Push)**:当...

    Java栈的实例-数组和链表两种方法 数组和链表.pdf

    数组实现栈是最基础的方式,通过预先分配一个固定大小的数组来存储栈中的元素。在`MyArrayStack`类中,数组`objs`用来存储元素,`size`变量记录当前栈中的元素个数。`push()`方法将元素添加到数组末尾,`pop()`方法...

    C++实现栈数据结构

    接下来,我们看`MyStack.cpp`,这是实现栈类功能的源代码文件。它将包含上述成员函数的具体实现,例如: ```cpp #include "MyStack.h" MyStack::MyStack(int size) { arr = new int[size]; if (arr == nullptr) ...

    栈结构的C++实现

    以下是一个简单的基于动态数组实现的栈示例: ```cpp #include using namespace std; class Stack { private: int* arr; // 动态数组 int top; // 栈顶索引 int capacity; // 容量 public: Stack(int size) ...

    C++ 实现栈操作的算法

    在C++中,我们可以使用数组或者`std::vector`来实现栈的初始化。对于数组,我们定义一个固定大小的数组并设置一个指针来跟踪栈顶位置;对于`std::vector`,其大小可以动态扩展,初始大小可设为0或预估的元素数量。...

    leetcode跳跃-datastructure:数据结构

    基于数组实现栈的出栈入栈操作 CalExpress 使用栈求简单表达式的值 MyStackByLinked 基于链表实现栈的入栈出栈操作 Browser 实现浏览器的前进后退功能 队列练习 MyArrayQueue 基于固定大小的数组实现的队列 ...

    算法与数据结构:栈的实现

    // 数组实现栈 int top = -1; // 栈顶索引,初始为-1表示栈为空 // 入栈操作 void push(int item) { if (top &gt;= MAX_SIZE - 1) { // 栈满,无法插入 throw "Stack overflow!"; } stack[++top] = item; } // ...

    栈类-建栈,进栈,出栈

    或者,如果使用的是数组实现的栈,可以简单地重新初始化数组。 6. **栈的其他操作**:除了基本操作外,还可以检查栈是否为空(`empty`),获取栈的大小(`size`)等。这些辅助函数帮助开发者更好地管理和控制栈的...

    C++实现栈源代码

    为了实现动态调整大小,栈可能采用动态数组或者链表实现。如果是动态数组,我们需要考虑如何在满时扩容,在空时缩容。如果是链表,我们则需要维护头结点和尾结点。 接下来是`main.cpp`文件,这是程序的主入口。在这...

    数据结构之栈——C++实现

    在C++中实现栈,我们可以利用STL(Standard Template Library)中的`stack`容器,或者自定义一个栈类来完成。 1. **栈的基本操作** - **压栈(Push)**:将元素添加到栈顶。在C++中,使用`stack.push()`函数将元素...

    java中LinkedList集合类实现栈和队列.doc

    在Java中,除了LinkedList,还可以使用ArrayDeque类来实现栈和队列,ArrayDeque提供了更高效的操作,因为它基于数组而不是链表。 在实际应用中,LinkedList适合于频繁插入和删除的场景,因为这些操作的时间复杂度为...

    MyArrayStack

    总结,MyArrayStack作为Java实现的栈数据结构,利用数组实现,遵循MyStack接口,提供了高效、动态扩容的栈操作。配合JUnit测试,保证了代码的正确性,为初学者提供了一个良好的学习范例,也适用于实际项目中的栈应用...

    栈的顺序存储结构

    在本文中,我们探讨的是使用C++模板类来实现栈的顺序存储,这个实现适用于哈工大的软件设计课程。 栈的基本操作包括入栈(Push)、出栈(Pop)、查看栈顶元素(GetTopEle)、判断栈是否为空(IsEmpty)以及打印栈中...

    C++数据结构实现之Stack.zip

    - 当使用数组实现栈时,需要预估最大元素数量以避免频繁的动态扩展。 - 链表实现则在插入和删除操作上更高效,但占用更多内存。 6. **代码测试**: 实现完成后,需要编写测试用例来确保栈的各种操作行为正确,...

    栈的Java语言实现

    共享栈是一种特殊类型的栈,可以在同一数组中支持多个栈的并发操作,本例中实现了两个栈共享同一个数组空间。 ##### 1. 类成员变量 - `int MAX_SIZE`: 定义共享栈的最大容量。 - `String[] stack`: 存储元素的数组...

    用队列实现栈(java代码).docx

    传统的栈可以用数组或链表来实现,但在某些情况下,我们可能需要利用其他数据结构如队列来实现栈。 #### 2. 队列与栈的区别 - **队列**:是一种先进先出(First In, First Out, FIFO)的数据结构,即最早进入队列...

    一个简单的栈演示程序

    对于数组实现,这涉及到调整指针;对于向量,可以使用push_back()函数。 3. 出栈(Pop):移除栈顶元素并返回其值。对于数组,需要更新指针;对于向量,使用pop_back()函数。 4. 查看栈顶元素(Peek):查看栈顶...

Global site tag (gtag.js) - Google Analytics