栈的链接存储结构--链栈 图解和代码实现
2013-03-11 22:50
295 查看
栈的链接存储结构--链栈
链栈的图片:
LinkStack.h
LinkStack.cpp
链栈的图片:
LinkStack.h
//LinkStack.h #ifndef LINKSTACK_H #define LINKSTACK_H template <class T> struct Node { T data; Node<T> *next; //此处<T>也可以省略 }; template <class T> class LinkStack { public: LinkStack( ); //构造函数,置空链栈 ~LinkStack( ); //析构函数,释放链栈中各结点的存储空间 void Push(T x); //将元素x入栈 T Pop( ); //将栈顶元素出栈 T GetTop( ); //取栈顶元素(并不删除) bool Empty( ); //判断链栈是否为空栈 private: Node<T> *top; //栈顶指针即链栈的头指针 }; #endif
LinkStack.cpp
//LinkStack.cpp #include "LinkStack.h" /* * 前置条件:栈不存在 * 输 入:无 * 功 能:栈的初始化 * 输 出:无 * 后置条件:构造一个空栈 */ template <class T> LinkStack<T>::LinkStack( ) { top=NULL; } /* * 前置条件:栈已存在 * 输 入:无 * 功 能:销毁栈 * 输 出:无 * 后置条件:释放栈所占用的存储空间 */ template <class T> LinkStack<T>::~LinkStack( ) { while (top) { Node<T> *p; p=top->next; delete top; top=p; } } /* * 前置条件:栈已存在 * 输 入:节点s * 功 能:在栈顶插入该节点 * 输 出:无 * 后置条件:如果插入成功,栈顶增加了一个元素 */ template<class T> void LinkStack<T>::Push(T x) { Node<T> *s; s=new Node<T>; s->data = x; //申请一个数据域为x的结点s s->next = top; top=s; //将结点s插在栈顶 } /* * 前置条件:栈已存在 * 输 入:无 * 功 能:删除栈顶元素 * 输 出:如果删除成功,返回被删元素值,否则,抛出异常 * 后置条件:如果删除成功,栈顶减少了一个元素 */ template <class T> T LinkStack<T>::Pop( ) { Node<T> *p; int x; if (top==NULL) throw "下溢"; x=top->data; //暂存栈顶元素 p=top; top=top->next; //将栈顶结点摘链 delete p; return x; } /* * 前置条件:栈已存在 * 输 入:无 * 功 能:读取当前的栈顶元素 * 输 出:若栈不空,返回当前的栈顶元素值 * 后置条件:栈不变 */ template <class T> T LinkStack<T>::GetTop( ) { if (top!=NULL) return top->data; } /* * 前置条件:栈已存在 * 输 入:无 * 功 能:判断栈是否为空 * 输 出:如果栈为空,返回1,否则,返回0 * 后置条件:栈不变 */ template <class T> bool LinkStack<T>::Empty( ) { if(top==NULL) return 1; else return 0; }
相关文章推荐
- 栈的链接存储结构--链栈 图解和代码实现
- 队列的链接存储结构——链队列 图解和代码实现
- 队列的链接存储结构——链队列 图解和代码实现
- 队列的链接存储结构——链队列 图解和代码实现
- 栈的链接存储结构---链栈的实现
- 二叉树的链式存储结构 C++代码实现
- [数据结构]程杰队列的链式存储结构及实现代码
- 栈的链接存储结构及实现
- 集合框架_集合嵌套存储和遍历元素的案例图解、集合嵌套存储和遍历元素的案例代码实现
- ”2.3 线性表的链接存储结构及实现“知识总结导图
- 字符串的动态存储结构的代码实现
- 链栈-----栈的链式存储结构及其实现
- 链队列的链接存储结构及实现
- 线性结构的顺序存储和链式存储的实现代码(二)
- Java中树的存储结构实现示例代码
- 数据结构之线性表代码实现顺序存储,链式存储,静态链表(选自大话数据结构)
- C++ 单链表基本操作分析与实现 链表 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结
- java线性表的存储结构及其代码实现
- 【线性表一:】两种存储结构的代码实现:顺序存储和链式存储
- 线性结构 -- 连续存储(数组), 1个简单的c语言代码实现.