c++实现栈

从原理上看,栈要比普通队列更简单一些。
栈的头文件内容如下:

class Stack
{
public:
	Stack();
	Stack(int capacity);
	~Stack();
	bool IsEmpty();
	bool IsFull();
	void ClearStack();
	int Length(); //栈的元素个数
	bool Push(int element);
	bool Pop(int &ele);
	void StackTraverse();
private:
	int *m_pStack;
	int m_iTop; //栈顶标记
	int m_iCapacity;
};

栈的源文件内容如下:

#include <iostream>
#include "Stack.h"
using namespace std;

Stack::Stack()
{
	cout <<"Stack::Stack()" << endl;
}
Stack::Stack(int capacity)
{
	m_iCapacity = capacity;
	m_pStack = new int[m_iCapacity];
	m_iTop = 0;
}
Stack::~Stack()
{
	delete []m_pStack;
	m_pStack = NULL;
}
bool Stack::IsEmpty()
{
	return m_iTop == 0 ? true : false;
}
bool Stack::IsFull()
{
	return m_iTop == m_iCapacity ? true : false;
}
void Stack::ClearStack()
{
	m_iTop = 0;
}
int Stack::Length()
{
	return m_iTop;
}
bool Stack::Push(int element)
{
	if (!IsFull()){
		m_pStack[m_iTop++] = element;
		return true;
	}
	return false;
}
bool Stack::Pop(int &ele)
{
	if (!IsEmpty()){
		m_iTop--;
		ele = m_pStack[m_iTop];
		return true;
	}
	return false;
}
void Stack::StackTraverse()
{
	if (!IsEmpty()){
		for (int i = 0; i < m_iTop; i++){
			cout << m_pStack[i] << endl;
		}
	}else{
		cout << "Stack is empty!" << endl;
	}
}

测试程序如下:

#include <iostream>
#include "Stack.h"
using namespace std;

int main(void)
{
	Stack s(4);
	s.Push(5);
	s.Push(7);
	s.Push(2);
	s.Push(4);
	s.StackTraverse();

	int ele = 0;
	s.Pop(ele);
	cout << ele << endl;
	s.StackTraverse();

	system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值