• test


      1 /*
      2  * mystl.h
      3  *
      4  * Copyright (C) 2021 - lsc
      5  *
      6  * debug.h is free; you can redistribute it and/or modify
      7  * it under the terms of the GNU General Public License as published by
      8  * the Free Software Foundation; either version 2 of the License, or
      9  * (at your option) any later version.
     10  *
     11  * debug.h is distributed in the hope that it will be useful,
     12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14  * GNU General Public License for more details.
     15  *
     16  * You should have received a copy of the GNU General Public License
     17  * along with . If not, see <http://www.gnu.org/licenses/>.
     18  
     19 ----------------------------------------------------------------------
     20  
     21 >Before you use it ,you need to know...
     22  
     23  * Name:mystl.h
     24  * Author: lsc
     25  * Update Date:14/08/21
     26 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
     27 #ifndef _MYSTL_H
     28 #define _MYSTL_H
     29 
     30 #include<iostream>
     31 using namespace std;
     32 /*
     33     This stl is not the best one.When you use it ,maybe it will run slower then the ture STL;
     34     But you can just to use it ,because the author has tested it many times;
     35 */
     36 
     37 template<class Type>
     38 class Node{
     39     public:
     40         Type da;
     41         Node *nxt;    //&
     42 };
     43 /*identify the data's apperance;*/
     44 template<class Type>
     45 class Stack{
     46     public:
     47         Stack();
     48         ~Stack();
     49 
     50         void push(Type N);
     51         void pop();
     52         bool empty();
     53         int size();
     54         Type top();
     55     private:
     56         Node<Type> *m_top;
     57         Node<Type> *m_bottom;
     58 };
     59 /*identify the Stack's appearance*/
     60 
     61 template<class Type>
     62 Stack<Type>::Stack(){
     63     Node<Type> *p=new Node<Type>;
     64     if(p==NULL){
     65         exit(0);
     66     }   
     67     else 
     68     {
     69         m_bottom=p;
     70         m_top=m_bottom;
     71     }
     72 }
     73 
     74 template<class Type>
     75 Stack<Type>::~Stack(){
     76     if(m_top!=m_bottom){
     77         while(m_bottom!=m_top)
     78         {
     79             Node<Type> *p;
     80             p=m_bottom;
     81             delete m_bottom;
     82             m_bottom=&(*p->nxt);
     83             delete p;
     84         }
     85     }
     86 }
     87 template<class Type>
     88 void Stack<Type>::push(Type N){
     89     Node<Type> *p;
     90     m_top->nxt=p;
     91     m_top=p;
     92     m_top->da=N;
     93     m_top=NULL;
     94 }
     95 
     96 template<class Type>
     97 bool Stack<Type>::empty(){
     98     return m_top==m_bottom;
     99 }
    100 
    101 template<class Type>
    102 Type Stack<Type>::top(){
    103     return *m_top->da;
    104 }
    105 #endif

    test.cpp

     1 #include<cstdio>
     2 #include"mystl.h"
     3 using namespace std;
     4 int main()
     5 {
     6     Stack<int>s;
     7     if(s.empty())printf("000
    ");
     8     s.push(1);
     9     s.push(2);
    10     printf("%d
    ",s.size());
    11     s.pop();
    12     if(!s.empty())printf("1111
    ");
    13     printf("%d
    ",s.size());
    14     return 0;
    15 }
  • 相关阅读:
    OO第四次暨期末总结
    OO第九到十一次作业小结
    OO第五到七次作业小结
    OO前三次作业阶段小结
    数据预处理相关
    Latex+VScode安装
    python学习网站+查询网站
    arcgis画图中添加带箭头的直线
    在ArcGIS 中标注中竖排文字
    vs2015使用fopen时遇到unsafe问题
  • 原文地址:https://www.cnblogs.com/hzoi-lsc/p/15147057.html
Copyright © 2020-2023  润新知