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 }
  • 相关阅读:
    line
    同步fifo的verilogHDL设计实例
    在DE1-SOC上运行Linux
    DE1-SOC连接设定
    Tcl语言笔记之二
    Tcl语言笔记之一
    关于复位赋初值的问题
    Altera FPGA中的pin进一步说明
    Altera FPGA中的pin简介
    笔记之Cyclone IV第一卷第四章Cyclone IV器件中的嵌入式乘法器
  • 原文地址:https://www.cnblogs.com/VortexPiggy/p/2468959.html
Copyright © 2011-2022 走看看