数据结构之 栈 手写 Stack

    科技2022-07-15  129

    记录数据结构栈学习过程(手写stack)

    #include <iostream> #include<bits/stdc++.h> using namespace std; template<class T> struct StackNode{ T data; StackNode<T> *next; StackNode(){}; StackNode(const T& mElement):data(mElement){} StackNode(const T& mElement,StackNode<T>* mNext):data(mElement),next(mNext){} }; template<class T> class Stack_Link{ private: StackNode<T> *stackTop; int _size; void Init(); public: Stack_Link() { Init(); }; ~Stack_Link(); bool empty()const{return _size==0;} int size()const{return _size;} T top(); void pop(); void push(const T& ); }; template<class T> void Stack_Link<T>::Init(){ stackTop=NULL; _size=0; } template<class T> Stack_Link<T>::~Stack_Link(){ while(stackTop!=NULL){ StackNode<T> *temp=stackTop->next; delete stackTop; stackTop=temp; } } template<class T> void Stack_Link<T>::pop(){ if(_size==0){ return; } StackNode<T> *temp=stackTop->next; delete stackTop; stackTop=temp; _size--; } template<class T> void Stack_Link<T>::push(const T& mElement) { StackNode<T>* temp = new StackNode<T>; temp->data = mElement; temp->next = stackTop; stackTop = temp; _size++; } template<class T> T Stack_Link<T>::top(){ if(_size==0)return (T)NULL; return stackTop->data; } int main(){ Stack_Link<int> s; cout<<s.size()<<" "<<s.empty()<<endl; for (int i = 0; i < 10; i++) { s.push(i); } cout<<s.size()<<" "<<s.empty()<<endl; for(int i=0;i<10;i++){ int t=s.top();s.pop(); cout<<"num = "<<t<<" s.size() = "<<s.size()<<endl; } cout<<endl; return 0; }

    效果展示

    Processed: 0.012, SQL: 8