• 栈的封装


    源代码

    Stack.h

     1 #include<iostream>
     2 #include<cstring>
     3 typedef   char  Stack_Data;  //栈的数据类型
     4 const int  Stack_Size=50;   //栈的最大存储量
     5 using namespace std;
     6 class Stack               
     7 {  
     8 private:
     9      Stack_Data Data[Stack_Size];
    10      int Top;
    11 public:
    12     Stack(); //初始化栈
    13     bool IsEmpty();//判空
    14     bool IsFull();//判满
    15     void Push(Stack_Data e);// 入栈
    16     bool Pop(Stack_Data *e);//出栈
    17     void GetTop(Stack_Data *e);//取栈顶元素
    18     void Display();//展示函数
    19     int  TopLocation();//获取Top
    20 };
    21 Stack::Stack()
    22 {
    23     Top=0;
    24 }
    25 bool Stack:: IsEmpty()
    26 {
    27     if(Top==0)
    28     {
    29         return true;
    30     }
    31     else 
    32         return false;
    33 }
    34 bool Stack::IsFull()
    35 {
    36     if(Top==Stack_Size-1)
    37     {
    38         return true;
    39     }
    40     else 
    41         return false;
    42 }
    43 void Stack::Push(Stack_Data e)
    44 {
    45     if(!IsFull())
    46     {
    47         Top++;
    48         Data[Top]=e;
    49         cout<<"Success"<<endl;
    50     }
    51     else
    52         cout<<"Stack OverFlow"<<endl;
    53 }   
    54 bool Stack::Pop(Stack_Data *e)
    55 {
    56     if(!IsEmpty())
    57     {
    58         *e=Data[Top];
    59         Top--;
    60         cout<<"Success"<<endl;
    61         return true;
    62     }
    63     else
    64         cout<<"Defeat"<<endl;
    65         return false; 
    66 }
    67 void Stack::GetTop(Stack_Data *e)
    68 {
    69      if(!IsEmpty())
    70      {
    71          *e=Data[Top];
    72          cout<<"Success"<<endl;
    73      }
    74      else 
    75          cout<<"Defeat"<<endl;
    76 }
    77 void Stack::Display()
    78 {   
    79     if(!IsEmpty())
    80     {
    81         int temp=Top;
    82         while(temp)
    83         {
    84             cout<<"Data["<<temp<<"]   "<<Data[temp]<<endl;
    85             temp--;
    86         }
    87     }
    88     else
    89         cout<<"False"<<endl;
    90 }
    91 int  Stack::TopLocation()
    92 {
    93     return Top;
    94 }

    测试代码

    Main.cpp

     1 int _tmain(int argc, _TCHAR* argv[])
     2 {   
     3     Stack obj;
     4     bool t;
     5     while(true)
     6     {   
     7         cout<<"是否入栈 "<<endl;
     8         cout<<"是    1"<<endl;
     9         cout<<"否    0"<<endl;
    10         cin>>t;
    11         if(!t)
    12         {
    13             break;
    14         }
    15         Stack_Data e;
    16         cout<<"请输入入栈元素"<<endl;
    17         cin>>e;
    18         obj.Push(e);
    19     }
    20     obj.Display();
    21     while(true)
    22     {   
    23         cout<<"是否出栈 "<<endl;
    24         cout<<"是    1"<<endl;
    25         cout<<"否    0"<<endl;
    26         cin>>t;
    27         if(!t)
    28         {
    29             break;
    30         }
    31         Stack_Data e;
    32         if(obj.Pop(&e))
    33         {
    34             cout<<"出栈元素:  "<<e<<endl;
    35         }
    36     }
    37     obj.Display();
    38     cout<<obj.IsFull()<<endl;
    39     cout<<obj.IsEmpty()<<endl;
    40     Stack_Data e;
    41     obj.GetTop(&e);
    42     cout<<e<<endl;
    43     cout<<obj.TopLocation()<<endl;
    44     return 0;
    45 }

       测试结果

  • 相关阅读:
    1467E. Distinctive Roots in a Tree(可持久化线段树+树上差分)
    1473E. Minimum Path(最短路+三维DP)
    LeetCode88. 合并两个有序数组
    LeetCode75. 颜色分类
    LeetCode80. 删除排序数组中的重复项 II
    定义企业结构-后勤配置
    查看清账凭证
    表T043S中,XXXX输入丢失
    过账,未清项管理,银行中转科目
    PK码
  • 原文地址:https://www.cnblogs.com/Howbin/p/8735409.html
Copyright © 2020-2023  润新知