用数组实现栈的结构
栈是一种先进后出的结构,就像压子弹一样,先压入的子弹后打出
这里我们谈一谈如何让用数组实现这一种结构
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#define max 10
using namespace std;
class ArrayStack
{
public:
ArrayStack(int len)//初始化栈
{
if (len<0)
{
return;
}
Stack = new int[len];
this->size = len;
}
int peek();//返回栈顶,但并不删除
void push(int obj);//压栈
void pop();//弹出栈顶
private:
int *Stack;
int index = 0;//index指向压入的数字应该所在的地方
int size = 0;//数组长度
};
int ArrayStack::peek()
{
if (index == 0)
{
cout << "越界!" << endl;
}
return Stack[index-1];
}
void ArrayStack::push(int obj)
{
if (index ==size)
{
cout << "越界!" << endl;
}
Stack[index++] = obj;
return;
}
void ArrayStack::pop()
{
if (index == 0)
{
cout << "越界!" << endl;
}
Stack[--index] = NULL;
}
int main(void)
{
ArrayStack stack = ArrayStack(max);
for (int i = 0; i < max;++i)
{
stack.push(10 - i);//因为是栈,所以应该是1 2 3 4 5 6 7 8 9 10
}
for (int i = 0; i < max; ++i)
{
cout << stack.peek() << " ";
stack.pop();
}
system("pause");
return 0;
}