@这篇文档是由C++代码实现的栈,并对以栈为基础的括号匹配、进制转换等问题进行了解决
栈是一种后进先出的数据结构。其中生活中以摞盘子为例最为实际。本文是以Visual Studio中新建的C++win32的控制台应用程序实现的,其中建立了头文件和源文件以及实现main()的demo文件,分别是MyStack.h和MyStack.cpp和demo.cpp,以及Coordinate.h和Coordinate.cpp文件。
其中MyStack.h和MyStack.cpp文件是建立一个栈的模板类,方便以后调用其中的函数。Coordinate.h和Coordinate.cpp文件主要是建立一个坐标属性的类,方便将该数据类型赋值给栈的模板类,以存放具有坐标属性的栈。demo中主要利用模板栈类实现了坐标类存入栈中、以及进制转换和浮点型类型数据等存放入栈中。
MyStack.h文件
#ifndef MYSTACK_H
#define MYSTACK_H
template <typename T>
class MyStack
{
public:
MyStack(int length);
virtual ~MyStack();
int MyStackLen();
bool MyStackEmpty();
bool MyStackFull();
void ClearMyStack();
bool InsertElement(T element);
bool DeleteElement(T &element);
bool TraversalMyStack();
private:
T* m_tMyStack;
int m_iMyStackLength;
int m_iMyStackCapacity;
int m_iTos;
};
#endif
MyStack.cpp
#include "MyStack.h"
#include <iostream>
using namespace std;
template <typename T>
MyStack<T>::MyStack(int length)
{
m_iMyStackCapacity = length;
m_tMyStack = new T[m_iMyStackCapacity];
ClearMyStack();
}
template <typename T>
MyStack<T>::~MyStack()
{
delete []m_tMyStack;
m_tMyStack = NULL;
}
template <typename T>
int MyStack<T>::MyStackLen()
{
//cout << "此时的队列长度为:" << m_iMyStackLength << endl;
return m_iMyStackLength;
}
template <typename T>
bool MyStack<T>::MyStackEmpty()
{
return m_iTos == 0?true:false;
}
template <typename T>
bool MyStack<T>::MyStackFull()
{
return m_iTos== m_iMyStackCapacity?true:false;
}
template <typename T>
void MyStack<T>::ClearMyStack