码迷,mamicode.com
首页 > 编程语言 > 详细

c++:用顺序表实现简单的栈

时间:2015-10-22 14:20:24      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:c++   模板      顺序表   

main.cpp

#include<iostream>

#include<string>

#include"Stack.hpp"

using namespace std;


void test1(){                     //测试

Stack<int> s1;

s1.Push(1);

s1.Push(2);

s1.Push(3);

s1.Push(4);


s1.Pop();

s1.Pop();

s1.Pop();

s1.Pop();

}


int main(){

test1();

return 0;

}

Stack.hpp

#pragma once


template <class T>            //使用模板可以实现多种类型栈操作

class Stack{

private:

T* _array;           //数据结构

size_t _capacity;     //入栈个数

int _topindex;     //栈空/满的判断标准

public:

Stack()

:_array(0)

, _capacity(0)

, _topindex(-1)

{}

void Push(const T& x){           //入栈

if (_topindex + 1 == _capacity){     //判断是否需要开辟空间

_capacity = 2 * _capacity + 3;

T* tmp = new T(_capacity);

if (tmp == NULL){

cout << "failed new" << endl;

exit(-1);

}

memcpy(tmp, _array, sizeof(T)*(_topindex + 1)); //内置类型使用   

delete _array;                                 // memcpy ,自定义

_array = tmp;                                 //使用for循环逐个拷贝

}                                                    //注意深拷贝和前拷贝

_array[++_topindex] = x;

}

void Pop(){                          //出栈

if (_topindex > -1){

cout << _array[_topindex] << endl;

_topindex--;

}

}

bool empty(){           //清空栈

return _topindex = -1;

}

};


本文出自 “moLova” 博客,请务必保留此出处http://molova.blog.51cto.com/10594266/1705182

c++:用顺序表实现简单的栈

标签:c++   模板      顺序表   

原文地址:http://molova.blog.51cto.com/10594266/1705182

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!