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 }
  • 相关阅读:
    用mkdirs创建目录
    关于布局(Layout)的一切
    用HTTP操作和文件操作把网页下载到sd卡
    OpenStack计费项目Cloudkitty系列详解(一)
    OpenStack/Gnocchi简介——时间序列数据聚合操作提前计算并存储起来,先算后取的理念
    python-RabbitMQ
    1go基本语法
    openstack多region配置
    cinder 挂载卷和 iSCSI原理
    Host aggregate分区
  • 原文地址:https://www.cnblogs.com/VortexPiggy/p/2468959.html
Copyright © 2011-2022 走看看