栈(stack)的链表表示
来源:互联网 发布:哈尔滨铁路局网络学校 编辑:程序博客网 时间:2024/06/05 15:45
栈的主要功能是:
bool Push(T val); //往栈顶添加元素val
T Top(); //返回栈顶元素的值
T Pop();//取出栈顶元素,并删除
void Clear(); //清空栈
bool IsEmpty();//判断是否为空
int Size();//返回元素个数
栈的链表表示
链表节点
template<class T>
class Node{
public:
~Node(void){ }
T val;
Node<T>* next;
Node(T nVal){
val = nVal;
next = NULL;
}
Node(void){}
};
栈的定义
template<class T>
class LinkStack
{
private:
Node<T>* m_pTop;
int size;
public:
LinkStack(void){
size = 0;
m_pTop = NULL;
}
~LinkStack(void){Clear();}
void Push(T val){ //栈顶添加元素
Node<T>* pNode = new Node<T>(val);
if(size == 0) //栈为空时
{
m_pTop = pNode;
}
else{
pNode->next = m_pTop;
m_pTop = pNode; //顶栈指针总是指向链表头
}
size++;
}
T Top(){ //返回栈顶元素
if(IsEmpty())
return NULL;
else
return m_pTop->val;
}
T Pop(){ //返回栈顶元素,并删除
if(IsEmpty())
return NULL;
else{
Node<T>* pNode = m_pTop;
m_pTop = m_pTop->next;
T tmp = pNode->val;
delete pNode;
size--;
return tmp;
}
}
void Clear(){ //清空栈
Node<T>* pNode;
while(m_pTop != NULL){
pNode = m_pTop;
m_pTop = m_pTop->next;
delete pNode;
size = 0;
}
}
bool IsEmpty() {return size == 0?true :false;}
int Size(){return size;}
};
- 栈(stack)的链表表示
- 数据结构之 栈stack 模板类(链表表示)
- 栈的链表表示
- 栈的链表表示
- 图的链表表示
- 队列的链表表示
- 树的儿子链表表示法
- 单链表表示的多项式相乘
- 循环队列的链表表示
- 链表表示的数字相加
- 树的孩子链表表示法
- 图的邻接表表示
- 图的邻接表表示
- 图的邻接表表示
- 图的邻接表表示
- 图的邻接表表示
- 图的邻接表表示
- 图的邻接表表示
- Java乔晓松-Struts2自定义拦截器和检验器
- Linux awk 命令 说明
- No7、(链表)
- 横向思维-六顶思考帽
- 常用PMP资料下载地址
- 栈(stack)的链表表示
- struts——拦截器与校验--转载
- struts2之继续深造
- 2749(附大正整数减法)
- Java类加载原理解析
- 5.1.3(求最小循环节)
- 【项目总结(二)】--关键帧Matlab提取 K-Means聚类算法算法总结与实现
- 机器学习脉络总结
- Spring注解入门