zoukankan      html  css  js  c++  java
  • 【动手敲代码】:链式栈(C++)

     1 #include<iostream>
     2 template<class T> class LinkStack;
     3 
     4 template<class T> class StackNode
     5 {
     6     private:
     7     T data;
     8     StackNode<T>* next;
     9     public:
    10     friend class LinkStack<T>;
    11     StackNode(T item, StackNode<T>* n = NULL):data(item),next(n){}
    12     T GetData(){    return data;    }
    13 };
    14 
    15 template<class T> 
    16 class LinkStack
    17 {
    18     private:
    19     StackNode<T>* top;
    20     public:
    21     LinkStack<T>():top(NULL){}
    22     ~LinkStack<T>()
    23     {    Destroy();    }
    24     void Destroy();
    25     void Push(const T item);
    26     T Pop();
    27     StackNode<T>* GetTop() const;
    28     void disp();
    29     bool IsEmpty() const
    30     {    return top == NULL;    }
    31 };
    32 
    33 template<class T>
    34 void LinkStack<T>::Push(const T item)
    35 {   top = new StackNode<T>(item,top);    }
    36 
    37 template<class T>
    38 T LinkStack<T>::Pop()
    39 {
    40     if(IsEmpty())
    41     std::cout <<" Stack is empty " << std::endl;
    42     T item = top->GetData();
    43     StackNode<T>* remove = top;
    44     top = top->next;
    45     delete remove;
    46     return item; 
    47 }
    48 
    49 template<class T>
    50 StackNode<T>* LinkStack<T>::GetTop() const
    51 {   return top;    }
    52 
    53 template<class T>
    54 void LinkStack<T>::disp()
    55 {
    56     StackNode<T>* temp = top;
    57     std::cout << "*****显示数据*****" << std::endl;
    58     while(temp)
    59     {
    60     std::cout << temp->GetData() << std::endl;
    61     temp = temp->next;
    62     }
    63     std::cout << "*****显示完毕*****" << std::endl;
    64 }
    65 
    66 template<class T>
    67 void LinkStack<T>::Destroy()
    68 {
    69     StackNode<T>* temp;
    70     while(top)
    71     {
    72     temp = top;
    73     top = top->next;
    74     delete temp;
    75     }
    76 }
  • 相关阅读:
    (转)typedef用法
    (转)在用户空间发生中断时,上下文切换的过程
    (转)内核中断,异常,抢占总结篇
    (转)中断上下文和进程上下文的区别
    (转)C中的volatile用法
    (转)gcc学习笔记
    (转)C系程序员面试必知必会之大端小端
    (转)我在北京工作这几年 – 一个软件工程师的反省
    (转)忠告
    Linux下VLAN功能的实现 (转)
  • 原文地址:https://www.cnblogs.com/VortexPiggy/p/2468959.html
Copyright © 2011-2022 走看看