动态顺序栈的简单实现

实现代码

#pragma once//防止文件重复包含
#include
using namespace std;
template
class Stack
{
public:
	Stack()
		:_pData(new T[3])
		, _capacity(3)
		, _size(0)
	{}
	void Push(const T& data)
	{
		CheckCapacity();
		_pData[_size++] = data;
	}
	void Pop()
	{
		_size--;
	}
		size_t Size()const
	{
		return _size;
	}
	size_t Capacity()const
	{
		return _capacity;
	}
	bool Empty()const
	{
		return 0 == _size;
	}
	T& top()//栈顶
	{
		return _pData[_size - 1];
	}
	T& top()const
	{
		return _pData[_size - 1];
	}
private:
	void CheckCapacity()
	{
		size_t size = Size();
		size_t capacity = Capacity();
		size_t newcapacity = 2 * capacity + 2;
		if (size >= capacity)
		{
			//增容
			T* tmp = new T[newcapacity];
			for (size_t i = 0; i
测试代码

void Test()
{
	Stack s;
	s.Push(1);
	s.Push(2);
	s.Push(3);
	cout << "s.top="<

 
 

你可能感兴趣的:(栈,c++)