数据结构(2)——链表形式的堆栈,以及火车车厢重排问题
来源:互联网 发布:sql 身份证号脱敏 编辑:程序博客网 时间:2024/05/01 05:10
说来惭愧,这一不更新数据结构就是这么长时间,这么搞9月之前怎么完成任务?!执行力还是低了点,以后还是像大牛们学习,争取一天一篇。
链表形式的堆栈早写好了,只是火车车厢重排问题一直没解决,所以暂时只上堆栈的代码,车厢问题调试中。
/*之前的顺序栈是使用顺序表的方式简历,同样也可以使用链表的形式描述而链表的描述也可以拓展Chain,也可以自己定义,再次直接自己定义*/#ifndef LinkedStack_H_#define LinkedStack_H_#include<iostream>template<class T>class LinkedStack; template<class T>class Node{friend class LinkedStack<T>;private:T data;Node<T> *link;};template<class T>class LinkedStack{public:LinkedStack() { top = 0; }~LinkedStack();bool IsEmpty() const { return top == 0;}bool IsFull() const;T Top() const;LinkedStack<T>& Add(const T& x);LinkedStack<T>& Delete(T& x);private:Node<T> *top;//指向栈顶节点};template<class T>LinkedStack<T>::~LinkedStack(){//析构函数Node<T> *next;while (top){next = top->link;delete top;top = next;}}template<class T>bool LinkedStack<T>::IsFull() const{//堆栈是否满,通过实际创建一个类型为Node的节点来判断try{Node<T> *P = new Node<T>;delete p;return false;}catch (NoMem){ return true; }}template<class T>T LinkedStack<T>::Top() const{//返回栈顶元素if (IsEmpty()) throw OutOfBounds();return top->data;}template<class T>LinkedStack<T> &LinkedStack<T>::Add(const T& x){//添加元素xNode<T> *p = new Node<T>;p->data = x;p->link = top;top = p;return *this;}template<class T>LinkedStack<T> &LinkedStack<T>::Delete(T& x){//删除栈顶元素,并将其送入xif (IsEmpty()) throw OutOfBounds();x = top->data;Node<T> *p = top;top = top->link;delete p;return *this;}//异常处理class OutOfBounds{public:OutOfBounds() {}};class NoMem{public:NoMem(){}};//使new引发NoMem异常而不是xalloc异常void my_new_handler(){throw NoMem();}std::new_handler Old_Handler_ = std::set_new_handler(my_new_handler);#endif
0 0
- 数据结构(2)——链表形式的堆栈,以及火车车厢重排问题
- 数据结构与算法C++描述(7)---堆栈及其在“火车车厢重排问题”中的应用
- 数据结构_链队列实验——火车车厢重排问题
- 火车车厢重排问题
- 火车车厢重排(链队列)
- 队列的应用--火车车厢重排列
- 火车车厢重排
- 火车车厢重排
- C++ Stack Example Rearranging RailRoad Cars 火车车厢重排问题
- C++ Queue Example Rearranging RailRoad Cars 火车车厢重排问题
- 火车车厢重排/队列实现
- 队列的应用——火车重排(java实现)
- 火车车厢重新排列问题
- C#(链栈)实现火车重排问题
- 火车车厢重排(栈式实现与队列实现)
- [C++]数据结构:链表形式的堆栈LinkedStack类
- Algorithm学习笔记 --- 铁轨(火车重排问题)
- 火车进站问题,堆栈的使用
- c/c++的全局变量
- 研祥MEC整机在铁路平交道口自动预警监控系统的应用
- 2.第一个程序: "Hello, World"
- 利用parse_url和parse_str快速解析url
- Android Lint的使用
- 数据结构(2)——链表形式的堆栈,以及火车车厢重排问题
- C/C++学习笔记11:指针与引用的区别
- 寿星天文历Java封装整理版
- Ubuntu安装Hadoop (单节点)
- Android 事件监听处理
- socket中的非阻塞connect()与getsockopt()
- PowerDesigner建模使用技巧
- sql 将逗号分割的字符串存入临时表
- 数据结构中线性表的c语言代码实现