链式栈模板

mac2022-06-30  24

全部数据结构、算法及应用课内模板请点击:https://blog.csdn.net/weixin_44077863/article/details/101691360

链式栈模板如下:(最后有STL stack的讲解,记得去看哦~)

template<class T> class LinkNode{ public: T data; LinkNode<T> *next; LinkNode():next(0){} LinkNode(const T &x,LinkNode<T> *p=0):data(x),next(p){} }; template<class T> class LinkStack{ private: LinkNode <T> *top; int size; public: LinkStack():top(0),size(0){} ~LinkStack(){Clear();} void Clear(){ while(top){ LinkNode <T>*tmp=top; top=top->next; delete tmp; } size=0; } bool Push(const T item){ LinkNode<T> *tmp=new LinkNode<T>(item,top); top=tmp; size++; return 1; } bool Pop(T & item){ LinkNode<T> *tmp; if(!size){ cout<<"栈为空!不能执行出栈操作!"<<endl; return 0; } item=top->data; tmp=top->next; delete top; top=tmp; size--; return 1; } bool Top(T &item){ if(!size){ cout<<"栈为空!不能读取栈顶元素!"<<endl; return 0; } item=top->data; return 1; } };

C++ STL stack:(操作很少也很简单,无迭代器)

#include <stack> stack<int> sk; sk.push(x); sk.emplace(x);//均是在栈顶插入,后者更好,具体不多说了,可以去看博主的STL链表讲解 sk.pop();//栈顶弹出一个元素,但不返回 sk.top();//返回栈顶元素的引用 sk.size(); sk.empty(); sk.swap(sk2);//栈与栈的交换,其实直接用普通的swap函数也一样 //没有clear操作就很奇怪

然后有人说博主你为啥起名叫sk不叫st呢

毕竟人家有set,区分一下还是比较好的

最新回复(0)