C++实现栈应用之进制转换
2017-02-06 15:23
323 查看
C++实现栈应用之进制转换
MyStack.h#ifndef MYSTACK_H #define MYSTACK_H #include <iostream> using namespace std; template <typename T> class MyStack { public: MyStack(int size); //分配内存初始化空间,设定栈容量,栈顶 ~MyStack(); //回收栈空间内存 bool stackEmpty(); //判定栈是否为空,为空返回true,非空返回false bool stackFull(); //判定栈是否为满,为满返回true,不满返回false void clearStack(); //清空栈 int stackLength(); //已有元素的个数 bool push(T elem); //元素入栈,栈顶上升 bool pop(T &elem); //元素出栈,栈顶下降 void stackTraverse(bool isFromButtom); //遍历栈中所有元素 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[size]; 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; } else { return false; } } template <typename T> bool MyStack<T>::stackFull() { if (m_iTop == m_iSize) { return true; } else { return 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()) { m_pBuffer[m_iTop] = elem; m_iTop++; return true; } else { return false; } } template <typename T> bool MyStack<T>::pop(T &elem) { if (!stackEmpty()) { m_iTop--; elem = m_pBuffer[m_iTop]; return true; } else { return false; } } template <typename T> void MyStack<T>::stackTraverse(bool isFromButtom) { if (isFromButtom) { 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]; } cout << endl; } #endif MYSTACK_H
main.cpp
#include "MyStack.h" #define BINARY 2 #define OCTONSRY 8 #define HEXADECTMAL 16 int main() { char num[] = "0123456789ABCDEF"; MyStack<char> *pStack = new MyStack<char>(50); int N = 0; cin >> N; int mod = 0; while (N != 0) { mod = N % HEXADECTMAL; pStack->push(num[mod]); N = N / HEXADECTMAL; } pStack->stackTraverse(false); delete pStack; pStack = NULL; system("pause"); return 0; }
相关文章推荐
- BREW应用的c++实现注意点
- C++模板应用——在类模板实现中引用其内部定义的复合数据类型
- 用C++与OpenCV实现人人上的好友拼图应用
- 堆栈的应用(1) 平衡符号 C++实现
- c++递归实现进制转换
- A STAR的实现和应用(c++版) 上
- 哈希表的应用(C++实现)
- 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
- 用C编写一个模拟实现C++多态应用的一个范例
- [C++]数据结构:散列表HashTable的实现与简单应用
- C++继承性应用实例日期和时间(VC 6.0实现)
- 在单链表的基础上用c++实现的链栈,并使用进制转换,表达式求值两个小程序来测试
- 堆栈的应用(2) 中缀算术表达式到后缀(逆波兰记法reverse polish notation)的转换及其计算 C++实现
- 数据结构—中缀表达式转后缀表达式算法及实现—栈的应用—计算表达式(C++代码实现)(1)
- 【摘录】BREW应用的c++实现注意点
- C++模板应用——让模板定义和实现分离的方法
- 堆栈的应用(1) 平衡符号 C++实现
- Linux下C++实现PHP扩展中级应用(一)
- 【C++ STL应用与实现】56: 使用std::unique删除重复元素
- java程序调用C、C++动态库的几种实现方式,即JNI的应用方式