Chinaunix首页 | 论坛 | 博客
  • 博客访问: 153305
  • 博文数量: 27
  • 博客积分: 710
  • 博客等级: 上士
  • 技术积分: 305
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-03 20:08
文章分类

全部博文(27)

文章存档

2012年(1)

2011年(22)

2010年(4)

我的朋友

分类: C/C++

2010-12-31 21:28:35

#include <iostream>
#include <assert.h>
using namespace std;

//结点类
template< class T >

class LinkStackNode
{
public:
    T data;
    LinkStackNode< T >* link;
    LinkStackNode(T& value):data( value ),link( NULL ) {}
};


//栈类
template< class T >
class LinkStack
{
    LinkStackNode< T >* tos;
public:
    LinkStack():tos( NULL ){}
    void Push( T& value );
    T Pop();
    bool IsEmpty();
    void ClearEmpty();
};

template< class T >
void LinkStack< T >::Push( T& value )
{
    LinkStackNode< T >* add = new LinkStackNode< T >( value );
    add->data = value;
    add->link = tos;
    tos = add;
}

template< class T >
T LinkStack< T >::Pop()
{
    assert( NULL );
    LinkStackNode< T >* old = tos;
    T data1 = old->data;
    tos = tos->link;

    delete old;

    return data1;
}

template< class T >
bool LinkStack< T >::IsEmpty()
{
    if( NULL == tos )
        return true;
    else
        return false;
}

template< class T >
void LinkStack< T >::ClearEmpty()
{
    tos == NULL;
}


阅读(1101) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-03-09 13:54:05

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com