随笔 - 8  文章 - 26  trackbacks - 0
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(4)

随笔档案

文章分类

文章档案

相册

C++语言

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 1//数据结构栈实现(基于链表)
 2#ifndef STACKLIST_H
 3#define STACKLIST_H
 4//节点结构
 5template<class T>
 6class Node
 7{
 8    public:
 9        Node(const T & val){data=val;next=NULL;}
10        T data;
11        Node<T> *next;
12}
;
13
14//栈实现
15template<class T>
16class Stack
17{
18public:
19    Stack();
20    virtual ~Stack();
21    bool IsEmpty();
22    Stack<T>& Push(const T &val);
23    Stack<T>& Pop(T &e);
24    T& GetTop() const{return Top->data;};
25    int Size() const {return _Size;};
26    
27private:
28    int _Size;
29    Node<T>  *Top;
30    
31}
;
32//-----------------------------------------------------------
33template<class T>
34Stack<T>::Stack()
35{
36    Top=NULL;
37    _Size=0;
38}

39
40//-----------------------------------------------------------
41template<class T>
42bool Stack<T>::IsEmpty()
43{    return !Top?true:false;
44
45}

46//-----------------------------------------------------------
47template<class T>
48Stack<T>::~Stack()
49{
50    Node<T>* move=NULL;
51    while(Top)
52    {
53        move=Top->next;
54        delete Top;
55        Top=move;
56    }

57    
58}

59//-----------------------------------------------------------
60template<class T>
61Stack<T>& Stack<T>::Push(const T &val)
62{
63    
64    Node<T> *NewNode = new Node<T>(val);
65    NewNode->next=Top;
66    Top=NewNode;
67    ++_Size;
68    return *this;
69}

70//-----------------------------------------------------------
71template<class T>
72Stack<T>& Stack<T>::Pop(T &e)
73{
74    if(Top==NULL) throw exception("栈下溢");
75    e=Top->data;
76    Node<T> *p=Top;
77    Top=Top->next;
78    delete p;
79    --_Size;
80    return *this;
81}

82
83
84#endif
posted on 2008-09-19 19:09 杨彬彬 阅读(549) 评论(0)  编辑 收藏 引用 所属分类: 数据结构

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理