栈的顺序存储结构与操作
来源:互联网 发布:c语言编程序 编辑:程序博客网 时间:2024/04/25 06:46
#include <iostream>
using namespace std;
struct Infor
{
char word;
};
template<class T>
class Test
{
public:
Test();
~Test();
void InterFace();
void GetIntoStack(); //入站
void OutputStack(); //出站不删除
void ShowStack(); //显示元素
void Exit(); //退出
void IsEmpty(); //是否为空
void DeleteTop(); //删除栈顶元素
void CleanArray(); //清零
private:
struct Infor *m_pInfHead, *m_pInfTail;
int m_nSumStack;
};
template<class T>
Test<T>::Test()
{
m_pInfTail = m_pInfHead = new struct Infor[10];
m_nSumStack = 0;
}
template<class T>
Test<T>::~Test()
{
}
template<class T>
void Test<T>::Exit()
{
exit(1);
}
template<class T>
void Test<T>::GetIntoStack()
{
static int sNTemp = 0;
if (sNTemp > 10)
{
cout << "None" << endl;
goto Exit;
}
char szTemp;
cin >> szTemp;
m_pInfTail[m_nSumStack++].word = szTemp;
sNTemp++;
Exit:
InterFace();
}
template<class T>
void Test<T>::OutputStack()
{
if (0 != m_nSumStack)
{
cout << m_pInfTail[m_nSumStack-1].word << endl;
}
else
{
cout << "None" << endl;
}
InterFace();
}
template<class T>
void Test<T>::ShowStack()
{
int i;
if (0 == m_nSumStack)
{
cout <<"None" << endl;
goto Exit;
}
for ( i = 0; i < m_nSumStack; i++)
{
cout << m_pInfHead[i].word << endl;
}
Exit:
InterFace();
}
template<class T>
void Test<T>::IsEmpty()
{
if (0 >= m_nSumStack)
{
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
InterFace();
}
template<class T>
void Test<T>::DeleteTop()
{
if (m_nSumStack <= 0)
{
cout << "None" << endl;
}
else
{
cout << m_pInfTail[--m_nSumStack].word << endl;
}
InterFace();
}
template<class T>
void Test<T>::CleanArray()
{
m_nSumStack = 0;
m_pInfTail = m_pInfHead;
InterFace();
}
template<class T>
void Test<T>::InterFace()
{
/* cout << "choose service" << endl;
cout << "Exit---------E" << endl;
cout << "GetIntoStack--p" << endl;
cout << "ShowStack----S" << endl;
cout << "outoutstack--G" << endl;
cout << "is empty----Y" << endl;
cout << "deleteTop---D" << endl;
cout << "cleanArray---T" << endl;*/
char szTemp;
cin >> szTemp;
switch (szTemp)
{
case 'E' | 'e':
Exit();
break;
case 'S' | 's':
ShowStack();
break;
case 'P'|'p':
GetIntoStack();
break;
case 'G'|'g':
OutputStack();
break;
case 'Y'|'y':
IsEmpty(); //是否为空
break;
case'D'|'d':
DeleteTop(); //删除栈顶元素
break;
case'T'|'t':
CleanArray(); //清零
break;
default:
break;
}
}
int main()
{
Test<char> t1;
t1.InterFace();
return 0;
}
- 栈的顺序存储结构与操作
- 栈的顺序存储结构与操作
- 队列的顺序存储结构与操作
- 队列的顺序存储结构与操作
- 线性表的顺序存储结构与操作
- 数据结构之栈的push与pop操作(顺序存储结构的c实现)
- 栈的顺序存储结构的相关操作(数据结构)
- 栈的基本操作(采用顺序存储结构)
- 栈的顺序存储结构和操作实现 数组实现
- 栈的简单操作(顺序结构存储)
- 栈的顺序存储结构操作及实现
- 线性表顺序存储结构的操作
- 线性表顺序存储结构的操作
- 栈的链式存储结构与操作
- 栈的链式存储结构与操作
- 栈的顺序存储结构
- 栈的顺序存储结构
- 栈的顺序存储结构
- 练习一个状态模式
- 实现MFC打开JPEG图像的源代码
- php上传中文文件名乱码解决方法
- 简单的括号匹配问题,只有 ( 和 )。。。其实原理就是开栈最后的状态。。。
- 线性表的链式存储结构与操作
- 栈的顺序存储结构与操作
- 概念数据模型,逻辑数据模型,物理数据模型(转)
- DREAMWEAVER8 部分问题解决方案
- 栈的链式存储结构与操作
- 视频
- Spring事务配置的五种方式
- Inventor Pro 2010 塑料模具模块下载
- 队列的顺序存储结构与操作
- oracle中connect by prior实现递归查询