数据结构——栈的工作原理(1)将简单的元素换成对象(坐标)
2019-02-06 03:19
106 查看
改造栈类,使其使用于坐标类
-main文件
#include <iostream> #include "Mystack.h" #include "Coordinate.h" using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char** argv) { Mystack *pStack = new Mystack(5);//初始化操作 //将Coordinate 作为对象传入 pStack->push( Coordinate( 1,1 )); //底 pStack->push( Coordinate( 2,2 )); cout << "The length of Stack is "<<pStack->stackLength() << endl << endl; pStack->stackTraverse(); cout << endl << "get one from stack: " << endl; Coordinate elem; pStack->pop(elem); pStack->stackTraverse(); cout << "The length of Stack is "<<pStack->stackLength() << endl << endl; if(pStack->stackEmpty())//判断是否为空 cout << "Empty" << endl; Mystack mystack(4); mystack.push(Coordinate(3,3)); mystack.stackTraverse(); cout << endl << endl; cout << "The length of the Stack is " << mystack.stackLength(); delete pStack; pStack = NULL; return 0; }
- Mystack头文件
Coordinate *m_p;//栈空间指针,指向
Coordinate对象
#ifndef MYSTACK_H## 标题 #define MYSTACK_H #include "Coordinate.h" class Mystack { public: Mystack(int size); ~Mystack(); bool stackEmpty(); bool stackFull(); void clearStack(); int stackLength(); bool push(Coordinate elem); bool pop(Coordinate &elem); void stackTraverse(); protected: Coordinate *m_p;//栈空间指针 int m_iSize;//栈容量 int m_iTop; }; #endif
- Mystack cpp文件
#include <iostream> #include "Mystack.h" #include "Coordinate.h" using namespace std; Mystack:: Mystack(int size){ m_iSize = size; m_p = new Coordinate[size];//Coordinate如果不是默认构造函数,则会发生错误,只能申请一个对象 m_iTop = 0; } Mystack::~Mystack(){ delete []m_p; } bool Mystack::stackEmpty(){ if( 0 == m_iTop ){ return true; } else return false; } bool Mystack::stackFull(){ if( m_iSize == m_iTop ) return true; else return false; } void Mystack::clearStack(){ m_iTop = 0; } int Mystack::stackLength(){ return m_iTop; } bool Mystack::push(Coordinate elem){ if( stackFull() ){ return false; } m_p[m_iTop] = elem; m_iTop++; return true; } bool Mystack::pop( Coordinate &elem){ if( stackEmpty() ) return false; else elem = m_p[--m_iTop]; return true; } void Mystack::stackTraverse(){ int temp = 0; while( temp < m_iTop ){ //cout << m_p[temp] << " "; m_p[temp].printCoordinate(); temp ++; } } #endif
- Coordinated头文件
#ifndef COORDINATE_H #define COORDINATE_H class Coordinate { public: Coordinate( int x = 0,int y = 0 );//默认构造函数 void printCoordinate(); protected: int m_iX; int m_iY; }; #endif
- Coordinate cpp文件
#include "Coordinate.h" #include <iostream> using namespace std; Coordinate::Coordinate(int x ,int y ){ m_iX = x; m_iY = y; } void Coordinate::printCoordinate(){ cout << "x = " << m_iX << " " << "y = " << m_iY << endl; }
- 运行结果
- C++类模版知识,运用类模版完成类模版栈
相关文章推荐
- [redis读书笔记] 第一部分 数据结构与对象 简单动态字符串
- 数据结构 基本概念(数据项--数据元素--数据对象)
- Redis-数据结构与对象-简单动态字符串
- Json树形结构数据转Java对象并存储到数据库的实现-超简单的JSON复杂数据处理 .
- 简单的介绍数据结构的里的(数据 数据元素 数据项 数据对象)
- redis 数据结构之和对象---简单动态字符串SDS(simple dynamic string)
- 重现Redis--数据结构与对象(一)
- 数据结构实验之串一:KMP简单应用
- 《Redis设计与实现》[第一部分]数据结构与对象-C源码阅读(二)
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构之单链表删除第i个元素并用e返回其值的算法
- js中的事件对象event (获取元素的,x,y坐标)
- 简单谈一点linux内核中套接字的bind机制--数据结构以及端口确定
- iOS编程------初级数据持久化/沙盒机制/NSFileManager/简单对象写入文件/复杂对象写入文件
- spring boot 输出简单 json格式的数据(利用分层结构)
- SDUT 2122 数据结构实验之链表七:单链表中重复元素的删除
- Messenger(信使(跨应用传递对象(数据)))的简单使用
- 我知道点redis-数据结构与对象(对象)-对象存储
- 数据结构实验之链表七:单链表中重复元素的删除
- 简单数据结构实现——二叉查找树