链式stack
来源:互联网 发布:数据帧 格式 14字节 编辑:程序博客网 时间:2024/06/16 08:20
#include"stdafx.h"
#include<iostream>
usingnamespacestd;
template<classT>
classListNode//节点类
{
public:
typedefListNode<T>*pListNode;
typedefListNode<T>&rListNode;
public:
ListNode<T>*Next;
Tval;
public:
ListNode(constT&value,pListNodep=NULL):val(value),Next(p){};
ListNode():Next(NULL){};
~ListNode(){};
};
template<classT>
classstack
{
public:
typedefListNode<T>*pNode;
protected:
pNodepTop;//定义头指针
public:
stack():pTop(NULL){}
~stack(){deleteAllNode();}
voiddeleteAllNode()
{
while(!isEmpty())pop();
}
boolisEmpty()const
{
return(pTop==NULL);
}
//boolisFull(){return false;} //此时是利用链表内存基本无限(硬件支持)
constT&getTop()const
{
returnpTop->val;
}
voidpush(constT&data)
{
pTop=newListNode<T>(data,pTop);
}
voidpop()
{
if(pTop==NULL)//首先判断
return;
pNodeq=pTop;
pTop=pTop->Next;
deleteq;
}
conststack&operator=(conststack&src);
};
template<classT>
conststack<T>&stack<T>::operator=(conststack&src)//赋值
{
if(this==&src||src.isEmpty())return*this;
deleteAllNode();
pListNode*p=newListNode<T>(src.pTop->val);
pListNode*q=src.pTop->Next;
pTop=p;
while(q!=NULL)
{
p->Next=newListNode<T>(q->val);
p=p->Next;
q=q->Next;
}
return*this;
}
intmain()
{
stack<int>p;
p.push(1);
p.push(2);
p.push(3);
p.push(4);
intval=p.getTop();
cout<<val<<endl;
for(inti=0;i<3;i++)
{
p.pop();
val=p.getTop();
cout<<val<<endl;
}
getchar();
return0;
}
- 链式stack
- 链式栈(Linked Stack)
- stack链式C++
- Stack(2)Stack的链式实现
- 通用的链式stack实现
- Stack-c单向链式结构
- Algorithms: 栈(Stack) 链式与数组实现
- C++数据结构之Linked Stack(链式栈)
- Stack栈 链式存储 实现
- (2011.07.20) 链式栈 // Link list-based stack implementation
- Hdu 5815 Joint stack 链式对顶栈
- java集合源码解读---Queu和Stack的数组和链式实现
- 简单的自定义实现Stack模板(顺序栈以及链式栈没有迭代器和销毁)
- stack
- stack
- stack
- stack
- Stack
- 【算法】贪心策略实现部分背包问题
- 关于Loadrunner11破解的各种问题。。。泪奔。。。
- 在VMware中安装Linux
- MATLAB知识小结
- 你真的懂单链表吗
- 链式stack
- iBATIS事务
- 准入控制解决方案的汇总
- Linux环境变量设置总结
- 互联网公司,传统软件公司,传统电子产品公司,嵌入式公司的赢利模式
- Linux企业级项目实践之网络爬虫(9)——通过URL抓取网页内容
- JTABLE 一个小格子添加2个按钮实现国际化 使用观察者设计模式
- 程序设计实习 构造函数相关 析构函数
- Queue的顺序实现