经典数据结构之链表实现的栈
来源:互联网 发布:乱码修复软件 编辑:程序博客网 时间:2024/05/22 05:23
数组和链表是线性表的两种表现方式,而栈作为一种适配器,既可以用数组实现,也可以用链表实现,由于采用后进先出的方式,两者添加和删除元素都是O(1)的。主要区别之处是数组本身使用的空间较小,因为只需要用n个元素外加长度属性就好了。链表使用的空间较大,这是因为节点本身需要一个指针和数据来表示。
#include <stdio.h>#include <assert.h>template<typename T>struct CLinkStack;template<typename T>struct SNode{friend CLinkStack<T>;public:SNode();SNode(const T& data);private:// members;T m_nData;SNode<T>* m_pNext;};template<typename T>SNode<T>::SNode():m_pNext(NULL){}template<typename T>SNode<T>::SNode(const T& data):m_nData(data), m_pNext(NULL) {}template<typename T>class CLinkStack{private: SNode<T>* m_pTop;public:// constructors; CLinkStack();~CLinkStack(); // methods;T mTop() const; CLinkStack<T>& mAdd(const T& data);CLinkStack<T>& mDelete(); bool mIsEmpty() const;};template<typename T>CLinkStack<T>::CLinkStack(){m_pTop = NULL;}template<typename T>CLinkStack<T>::~CLinkStack(){while(m_pTop != NULL){ SNode<T>* pTmp = m_pTop; m_pTop = m_pTop -> m_pNext; delete pTmp;}}template<typename T>CLinkStack<T>& CLinkStack<T>::mAdd(const T& data){ SNode<T>* pTmp = new SNode<T>(data);pTmp -> m_pNext = m_pTop;m_pTop = pTmp;return *this;}template<typename T>CLinkStack<T>& CLinkStack<T>::mDelete(){if(m_pTop != NULL){ SNode<T>* pTmp = m_pTop;m_pTop = m_pTop -> m_pNext;delete [] pTmp;} return *this;}template<typename T>bool CLinkStack<T>::mIsEmpty() const{ return ((m_pTop == NULL) ? true : false);}template<typename T>T CLinkStack<T>::mTop() const{assert(m_pTop != NULL);return m_pTop->m_nData;}
- 经典数据结构之链表实现的栈
- 经典数据结构之队列的链表实现方法
- 经典数据结构之数组实现的队列
- 数据结构之栈的链表实现
- 经典数据结构--数组实现的栈
- 简单数据结构的实现之链栈
- 数据结构之 链栈的实现
- 【数据结构】之链栈的java实现
- 数据结构之链栈的实现
- 【数据结构】之链栈的java实现
- 【数据结构】之链栈的java实现
- 数据结构之栈的顺序表实现
- 数据结构之双向链表的实现
- 数据结构之链表的Java实现
- 数据结构之队列的链表实现
- Java数据结构之链表的实现
- 数据结构 之 链表实现的树
- 数据结构之栈的实现
- 用Js的eval解析JSON中的注意点
- 第二天
- 控件的显示隐藏方法
- 出人意料,印度Q3个人电脑销量不降反升
- hdoj1176 免费馅饼 (DP)
- 经典数据结构之链表实现的栈
- adb server is out of date. killing...
- PS滤镜有的时候不能用?
- 字符串函数_比较字符串与字符串集合
- 编写一个递归算法,实现将一颗二叉树的左右孩子互换。
- 线程总结(一)
- opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-ld: cannot find -lc
- oracle 帐号管理
- 生成代码