数据结构与算法-栈

定义:栈是一种特殊的有序表,因为其插入和删除都在一端进行。
栈是一种先进后出的结构,被操作的元素被称之为栈顶,栈在任何时候被操作的元素只有一个那就是栈顶元素。

实现:
1、数组
2、链表

栈的操作

isEmpty():判断栈是否为空
push(stackItem):入栈
pop():出栈

需要记录的数据
1、栈顶元素:在此关于栈顶元素有的认为是就是栈最上面的元素,也有的认为是栈顶元素位置的下一个位置,其实没有绝对的正确的说法,看自己的理解吧,怎么样理解都是可以的。
2、栈的大小

栈的实现(此处用数组进行实现)

定义头文件 stack.h

class stack()
{
    private:
        int size;
//此处top的初始值不同(0或者-1),对应的后续的入栈出栈操作也会不同
        int top = -1;
        int* a;
    public:
        stack(int size);
        ~stack();
        void push(int item);
        int pop();
        int getSize();
        bool isStackEmpty();
        bool isStackFull();
}

栈的实现代码:stack.cpp

#include<stack.h>
stack::stack(int size)
{
    a = new int[size];
    this->size = size;
}
stack::~stack()
{
    delete[] a;
}
bool stack::isStackEmpty()
{
    return top == -1;
}
bool stack::isStackFull()
{
    return top == size;
}
void stack::push(int item)
{
    if(isStackFull())
        print("the stack is full")'
    else
        a[++top] = item;
}
int stack::pop()
{
    if(isStackFull())
        print("the stack is full");
    else
        return a[top--]
}
int stack::getSize()
{
    return size;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值