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