九天雁翎的博客
如果你想在软件业获得成功,就使用你知道的最强大的语言,用它解决你知道的最难的问题,并且等待竞争对手的经理做出自甘平庸的选择。 -- Paul Graham

堆栈的简单C++实现

堆栈的简单C++实现

write by** 九天雁翎(JTianLing) –
blog.csdn.net/vagrxie
**

头文件:

#ifndef __STACK_H__
#define __STACK_H__

#include <iostream>
#include <vector>
using namespace std;

template <typename T>
class CStack
{
public :
    CStack() { }
    ~CStack() { }

    size_t empty()
    {
        return miDataVec.empty();
    }

    size_t size()
    {
        return miDataVec.size();
    }

    void pop()
    {
        miDataVec.pop_back();
    }

    T& top()
    {
        return miDataVec.back();
    }

    const T& top() const
    {
        return miDataVec.back();
    }

    void push(const T& aItem)
    {
        miDataVec.push_back(aItem);
    }
private :
    vector<T> miDataVec;

};

#endif

测试程序:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include "stack.h"
using namespace std;

int main(int argc, char * argv[])
{
    CStack<int > loStack;

    loStack.push(1);
    cout << loStack.top() <<" ";

    loStack.push(2);
    cout << loStack.top() <<" ";

    loStack.push(1);
    cout << loStack.top() <<" ";

    loStack.push(2);
    cout << loStack.top() <<" ";

    loStack.push(3);
    cout << loStack.top() <<" ";
    
    loStack.push(4);
    cout << loStack.top() <<" ";

    cout << endl;

    while(loStack.size() != 0)
    {
        cout << loStack.top() <<" ";
        loStack.pop();
    }

    cout << endl;

    exit(0);
}

这里顺便说明一下,这个实现仅仅是为了说明问题。

在C++中标准的stack实现是通过adaptor设计模式来实现的,并将用于实现的容器放入了模板的参数,以方便你用vector和list,来替代默认的deque。

write by** 九天雁翎(JTianLing) –
blog.csdn.net/vagrxie
**

分类:  算法 
标签:  C++  堆栈 

By 九天雁翎

2008年12月19日 | 九天雁翎的博客

前一篇: 堆栈的应用(1) 平衡符号 C++实现 后一篇: 堆栈的应用(2) 中缀算术表达式到后缀(逆波兰记法reverse polish notation)的转换及其计算 C++实现