数据冒险之栈
来源:互联网 发布:ui设计php 编辑:程序博客网 时间:2024/03/29 15:00
MyStack.h
#ifndef MYSTACK_H#define MYSTACK_Htemplate<typename T>class MyStack{public:MyStack(int size); //分配内存初始化栈空间,设定栈容量,栈顶 ~MyStack(); //回收栈空间内存,防止内存泄漏bool stackEmpty(); //判空, bool stackFull(); //判满 void clearStack(); //清空栈 int stackLength(); //已有元素个数 bool push(T elem); //元素入栈,栈顶上升 bool pop(T &elem); //元素出栈,栈顶下降 void stackTraverse(bool isFromButton); //遍历所有元素 private:T *m_pBuffer; //栈空间指针 int m_iSize; //栈容量 int m_iTop; //栈顶 };template<typename T>MyStack<T>::MyStack(int size){m_iSize = size;m_pBuffer = new T[m_iSize]; //申请类型T大小为m_iSize的内存 m_iTop = 0;}template<typename T>MyStack<T>::~MyStack(){delete[]m_pBuffer; //释放内存m_pBuffer = NULL;}template<typename T>bool MyStack<T>::stackEmpty(){if (0 == m_iTop)return true;elsereturn false;}template<typename T>bool MyStack<T>::stackFull(){if (m_iSize <= m_iTop)return true;elsereturn false;}template<typename T>void MyStack<T>::clearStack(){m_iTop = 0;}template<typename T>int MyStack<T>::stackLength(){return m_iTop;}template<typename T>bool MyStack<T>::push(T elem){if (stackFull()) //入栈先判满return false;m_pBuffer[m_iTop] = elem;m_iTop++;return true;}template<typename T>bool MyStack<T>::pop(T &elem){if (stackEmpty()) //出栈判空return false;m_iTop--;elem = m_pBuffer[m_iTop];return true;}template<typename T>void MyStack<T>::stackTraverse(bool isFromButton){if (isFromButton){//从底到顶索引for (int i = 0; i<m_iTop; i++){cout << m_pBuffer[i]; //基本类型没问题}}else{//从顶到低遍历for (int i = m_iTop - 1; i >= 0; i--){cout << m_pBuffer[i];}}}#endif
coordinate.h
#ifndef COORDINATE_H#define COORDINATE_H#include<ostream>using namespace std;class Coordinate{friend ostream &operator<<(ostream &out,Coordinate &coor);public:Coordinate(int x=0 ,int y=0);void printCoordinate();private:int x;int y;};#endif
coordinate.cpp
#include"coordinate.h"#include<iostream>using namespace std;Coordinate::Coordinate(int _x,int _y){x = _x;y = _y;}void Coordinate::printCoordinate(){cout << "(" << x << "," << y << ")"<< endl;}//运算符重载ostream &operator<<(ostream &out, Coordinate &coor){cout << "(" << coor.x << "," << coor.y << ")" << endl;return out;}
main.cpp
#include<iostream>#include"stdlib.h"#include"MyStack.h"#include"coordinate.h"using namespace std;int main(){MyStack<Coordinate> *pStack = new MyStack<Coordinate>(5);pStack->push(Coordinate(2, 3));pStack->push(Coordinate(4, 7));pStack->push(Coordinate(6, 9));pStack->stackTraverse(true);return 0;}
阅读全文
0 0
- 数据冒险之栈
- 数据冒险之单链表
- 数据冒险之队列实例
- 数据冒险之顺序表
- 数据冒险之栈应用(数制转换、括号匹配)
- 数据冒险
- 数据冒险之顺序表应用
- 数据冒险之二叉树(数组)
- 数据冒险之单链表(简易通信录)
- 数据冒险之二叉树(链表实现)
- 数据冒险之图以及最小生成树
- 数据更新操作冒险记事
- 冒险
- Eclipse 3.2冒险之旅
- Eclipse 3.2冒险之旅
- 洛谷 U3178 zty的冒险之行
- 《大话处理器》连载——微架构(7) 流水线上的冒险——数据冒险
- 三消游戏冒险王之tiled使用经验
- 【Codeforces】834C. The Meaningless Game
- ext分页条显示信息不对
- 数据结构实验之栈八:栈的基本操作(栈)
- [Muduo网络库源码分析] (2) base/Condition.cc_h_条件变量操作
- unreal engine 4学习笔记:蓝图中变量的GET与SET
- 数据冒险之栈
- 51nod 1267 4个数和为0
- [Leetcode] 321. Create Maximum Number 解题报告
- 顺序循环队列的基本操作(2017.7.26)
- [US Giants] 六. Linked List
- hdu 6055 Regular polygon
- scala把序列分解成子集(group by,partition)
- hdu2098 分拆素数和(C语言)
- 【转】BGP基本配置与总结 (二)