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 }
原文地址:https://www.cnblogs.com/hzoi-lsc/p/15147057.html