栈的实现(栈的基础操作)

问题描述:

       面试或笔试时,常常会遇到自主实现一个栈,以实现进出栈,判空和满等的相关操作,虽然实现难度较为简单,但却也算得上一个热门题型,主要考察学生有效时间内对于简单栈的设计是否考虑周全以及成员函数的实现以及参数和函数返回值等细节问题。


#include<iostream>
using namespace std;

const int Max_size = 100;

class Stack
{
public:
	Stack();//构造函数
	~Stack();//析构函数(可省略,系统自动调用默认析构函数)
	void Push(const int a);//入栈操作
	int Pop();//出栈操作
	bool IsEmpty()const;//判空操作(const修饰成员列表,表示修饰的成员对象不能更改其值)
	bool IsFull()const;//判满操作
	void Clear();//清空操作
	void Display();//打印该栈

private:
	int arr[Max_size];//存放元素值(成员变量值)
	int Top;//栈顶指针
};

Stack::Stack()
{
	Top = -1;
}


Stack::~Stack(void)
{}

void Stack::Push(const int a)
{
	if (Top == Max_size - 1)
	{
		cout << "The Stack is full!" << endl;
		return;
	}
	Top++;
	arr[Top] = a;
}

int Stack::Pop()
{
	if (Top == -1)
	{
		cout << "The Stack is Empty!" << endl;
		return 0;
	}
	int tmp = arr[Top];
	Top--;
	return tmp;
}

bool Stack::IsEmpty()const
{
	if (Top == -1)
	{
		return true;
	}
	else
		return false;
}

bool Stack::IsFull()const
{
	if (Top == Max_size - 1)
	{
		return true;
	}
	else
		return false;
}

void Stack::Clear()
{
	Top = -1;
}

void Stack::Display()
{
	for (int i = 0; i <= Top; i++)
	{
		cout << arr[i] << " ";
	}
	cout << endl;
}
//测试用例
void Test()
{
	Stack sp[5];
	sp[0].Push(1);
	sp[1].Push(2);
	sp[2].Push(3);
	sp[3].Push(4);
	sp[4].Push(5);

	sp[0].Display();
	sp[1].Display();
	sp[2].Display();
	sp[3].Display();
	sp[4].Display();

	//sp[4].Pop();
	//sp[4].Display();
}
//主函数
int main()
{
	Test();
	return 0;
}



注:自主实现简单的栈,有助于深入理解栈的构造以及特性,也是进一步学习相关栈的复杂操作的重要基础,在自主实现后使用库函数的栈才更加得心应手。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值