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 }
  • 相关阅读:
    JavaScript跳转到指定页面并且到指定的tab切换窗口
    三层架构之基础篇(对数据库增删改查)
    三层架构之基础篇(三层架构模型)
    过一天不登QQ的生活
    MVC + EF 框架 对数据库做增删改查
    想说的话
    新的2019年,向上
    C#读取txt文档
    C#写的 电子邮件客户端(winform窗体)
    C# 鼠标任意拖动无边框窗体(调用API函数)。
  • 原文地址:https://www.cnblogs.com/VortexPiggy/p/2468959.html
Copyright © 2011-2022 走看看