数据结构—栈(一)

栈(Stack),特殊的线性表,只能在表头进行插入和删除操作。又称为后进先出表、LIFO表。

因为之前发帖问动态规划时别人说可以用栈实现动态规划而去看了看,写下来留作记录~

栈实现的基本操作有:1、Empty()——判断一个栈是否为空栈;

2、Full()——判断一个栈是否为满栈;(与1及其类似)

3、Top()——返回栈顶元素;

4、Push(x)——把X插入栈顶;

5、Pop()——删除栈顶元素并输出;

看书上说栈分为顺序实现的链式指针形实现,我先学了顺序实现,用得是数组和C++的类实现。

下面是代码实现:

#include <iostream>
using namespace std;
class Stack
{
private:
	int top,*date,MAX;
public:
	Stack(int size);                      //构造函数
	~Stack();                             //析构函数
	bool Empty();                         //判断是否为空
	int Top();                            //获取栈顶值
	void Push(int x);                     //插入一个元素
	void Pop();                           //删除一个元素
	int getSize();                        //获取栈的大小
};
//----------------------------------成员函数的实现------------------------------
Stack::Stack(int size)
{
	top=0;
	MAX=size;
	date=new int(size);
}
Stack::~Stack()
{
	delete[] date;
}
bool Stack::Empty()
{
	if(top==0)
		return 1;
	return 0;
}
int Stack::Top()
{
	if(top==0)
		cout<<"栈为空。"<<endl;
	return date[top-1];
}
void Stack::Push(int x)
{
	if(top==MAX)
		cout<<"栈已满。"<<endl;
	else
	{
		date[top]=x;
		top++;
	}
}
void Stack::Pop()                      //通过让后一位的元素覆盖当前元素实现删除。
{
	if(top==0)
		cout<<"栈为空。"<<endl;
	else
	{
		top--;
 		cout<<date[top]<<endl;
 	}
}
int Stack::getSize()
{
	return size;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值