博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用C++模板实现栈的求最小值功能
阅读量:6875 次
发布时间:2019-06-26

本文共 1722 字,大约阅读时间需要 5 分钟。

-----Test.h文件-----------------------------------------

#ifndef	TEST_H#define TEST_H#include
using namespace std;template
class CMyStack{private: struct Item { public: T data; Item *next; Item():next(NULL){} }; Item *m_data; Item *m_min; CMyStack(const CMyStack&); CMyStack& operator=(const CMyStack&);public: CMyStack(); ~CMyStack(); T &top(); bool empty(); void pop(); void push(const T &); const T &min();};template
CMyStack
::CMyStack():m_data(NULL),m_min(NULL){}template
CMyStack
::~CMyStack(){ if(m_data!=NULL) { Item *p,*q; p=m_data; q=NULL; while(p!=NULL) { q=p; p=p->next; delete q; } }}template
T& CMyStack
::top(){ if(!empty()) return m_data->data; else throw exception("stack is empty");}template
bool CMyStack
::empty(){ if(m_data==NULL) return true; else return false;}template
void CMyStack
::pop(){ if(!empty()) { Item *p=m_data; m_data=m_data->next; delete p; p=m_min; m_min=m_min->next; delete p; } else { throw exception("stack is empty"); }}template
void CMyStack
::push(const T &t){ Item *p=new Item(); p->data=t; Item *q=new Item; if(!empty()) { if(t>m_min->data) { q->data=m_min->data; } else q->data=t; } else { q->data=t; } q->next=m_min; m_min=q; p->next=m_data; m_data=p;}template
const T &CMyStack
::min(){ if(!empty()) { return m_min->data; } else { throw exception("stack is empty"); }}#endif

----------------------main.cpp中的调用-----------------------------------------------

void main(){ 	CMyStack
myStack; int a; for(int i=0;i<5;i++) { cin>>a; myStack.push(a); cout<<"min:"<
<

  

转载于:https://www.cnblogs.com/dyc0113/p/3210713.html

你可能感兴趣的文章
使用 LogStash 归集日志
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
德国博世百年风雨启示录(下):实业强国
查看>>
(整理)用Elixir做一个多人扑克游戏 4
查看>>
关于架构
查看>>
The application’s PagerAdapter changed the adapter’s contents without calling PagerA
查看>>
qcom 跨平台的串口调试工具 PKGBUILD
查看>>
Delphi 时间格式化,动态显示时间,显示最新时间
查看>>
在JAVA中将NEW一分为2,分步进行[反射机制产生类]
查看>>
Java多态性的两个特殊情况
查看>>
我的友情链接
查看>>
怎么改变Win7登陆背景图片
查看>>
虚拟带库和物理带库比较
查看>>
AD委派加域权限
查看>>
在Delphi 7中使用加密的SQLite
查看>>
wordpress 无用的RSS Feed Cache
查看>>
Linux Vi编辑器的基本使用方法
查看>>
HTTP头域列表与解释 之 response篇
查看>>
一切属他,则名为苦;一切由己,自在安乐。
查看>>