链式栈
来源:互联网 发布:linux自动挂载 编辑:程序博客网 时间:2024/05/22 17:05
#ifndef LINKEDSTACK_H#define LINKEDSTACK_Htemplate<class T> class LinkedStack;template<class T>class ChainNode{friend class LinkedStack<T>;private:ChainNode(const T& theData, ChainNode *n = 0): data(theData), link(n) {}T data;ChainNode<T> *link;};template<class T>class LinkedStack{public:LinkedStack() : top(0) {}~LinkedStack() { MakeEmpty();}bool IsEmpty() const;T& Top() const; // 显示栈顶的数据,void Push(const T& e);void Pop();void MakeEmpty();private:ChainNode<T> *top; // 栈顶的指针,};template<class T>bool LinkedStack<T>::IsEmpty() const{return top == 0;}template<class T>void LinkedStack<T>::Push(const T &e){top = new ChainNode<T>(e,top);}template<class T>T& LinkedStack<T>::Top() const{if(this->IsEmpty())throw "Stack is empty.";return top->data;}template<class T>void LinkedStack<T>::Pop(){if(this->IsEmpty())throw "Stack is empty.Connot delete.";ChainNode<T> *delNode = top;top = top->link;delete delNode;}template<class T>void LinkedStack<T>::MakeEmpty(){while(!IsEmpty())Pop();}#endif
#include <iostream>#include "LinkedStack.h"using namespace std;int main(){LinkedStack<int> s;s.Push(6);cout << s.Top() << endl;s.Push(3);cout << s.Top() << endl;s.Pop();cout << s.Top() << endl;return 0;}
0 0
- 链式栈
- 链式栈
- 链式栈
- 链式栈
- 链式栈
- 链式栈
- 链式栈
- 栈链式
- 链式栈
- 链式栈
- 链式栈
- 链式栈
- 栈-链式
- 链式栈
- 链式栈
- 链式栈
- 链式栈
- 链式栈
- CF 二分
- dfs深度优先搜索
- STM32f103 看门狗使用
- 利用select函数实现非阻塞式的socket accept
- C++实验3—定期存款利息计算器
- 链式栈
- JAVA+Selenium环境配置进行web页功能自动化的测试
- 关于mysql事件处理的方法
- JAVA中HashMap如何删除元素
- 产品经理从娃娃抓起
- CodeForces 173A Rock-Paper-Scissors(数论)
- 虚表的地址与虚继承类大小的计算
- 01_AsyncTask基本使用
- Hibernate 缓存机制详细解析