简单数据类型的栈实现:先入后出(后入先出),LIFO,
/********************************/
/*文件名称:charStack.h */
/*文件内容:定义char类型的栈的类*/
/********************************/
#ifndef CHARSTACK_H
#define CHARSTACK_H
class Stack
{
public:
Stack(int size);//初始化栈
~Stack();//析构函数:释放栈的内存
bool stackEmpty();//判断栈是否为空
bool stackFull();//判断栈是否为满
int stackSize();//获取栈的元素个数
bool inStack(char element);//元素入栈
bool outStack(char& element);//元素出栈
void printStack(bool isFromBottom);//打印栈元素
private:
char* m_pStack;//声明栈的内存
int m_iSize;//声明栈的内存总长度
int m_iTop;//声明栈顶
};
#endif
//文件名称:charStack.cpp
#include "charStack.h"
#include <stdio.h>
#include <iostream>
using namespace std;
Stack::Stack(int size)//初始化栈
{
m_pStack=new char[size];
m_iSize=size;
m_iTop=0;
}
Stack::~Stack()//析构函数:释放栈的内存
{
delete []m_pStack;
m_pStack=NULL;//NULL有效,添加头文件#include <stdio.h>
}
bool Stack:: stackEmpty()//判断栈是否为空
{
if (0==m_iTop)
{
return true;
}
return false;
}
bool Stack::stackFull()//判断栈是否为满
{
if (m_iTop==m_iSize)
{
return true;
}
return false;
}
int Stack::stackSize()//获取栈的元素个数
{
return m_iTop;
}
bool Stack::inStack(char element)//元素入栈
{
if (stackFull())
{
return false;
}
else
{
m_pStack[m_iTop]=element;
m_iTop++;
return true;
}
}
bool Stack::outStack(char& element)//元素出栈
{
if (stackEmpty())
{
return false;
}
else
{
m_iTop--;
element=m_pStack[m_iTop];
return true;
}
}
void Stack::printStack(bool isFromBottom)//打印栈元素
{
if (isFromBottom)
{
for (int i=0;i<m_iTop;i++)//自栈底到栈顶打印
{
cout<<m_pStack[i]<<" ";
}
}
else
{
for (int i=m_iTop-1;i>=0;i--)//自栈顶到栈底打印
{
cout<<m_pStack[i]<<" ";
}
}
cout<<endl;
}
//main.cpp
#include "charStack.h"
int main()
{
Stack stack(4);
stack.inStack('a');
stack.inStack('b');
stack.inStack('c');
stack.inStack('d');
char e;
stack.outStack(e);
stack.inStack('f');
stack.printStack(true);
stack.printStack(false);
return 0;
}
文件运行结果: