//用户输入一组数据(字符串),处理出错的数据,最后输出正确的数据
//@表示 说明之前全部出错
//#表示进之前一个字符出错
//*表示结束输入
#include <iostream>
using namespace std;
#define MAXSIZE 50
class Order_Sta
{
private:
char* Buffer;
int Top;
int End;
public:
Order_Sta()
{
Buffer = new char[MAXSIZE+1];
Top = End = 0;
}
//压栈
void Push(char);
//出栈
char Pop();
//判断栈是否为空
bool Empty();
//清空栈
void Clear();
};
void Order_Sta::Push(char c)
{
if(Top < MAXSIZE)
{
Top = Top + 1;
Buffer[Top] = c;
}
else
{
cout<<"溢出"<<endl;
}
}
char Order_Sta::Pop()
{
if(Top > 0)
{
char c = Buffer[Top];
Top = Top - 1;
return c;
}
else
{
cout<<"栈空!"<<endl;
return NULL;
}
}
bool Order_Sta::Empty()
{
if(Top == End)
{
return true;
}
else
{
return false;
}
}
void Order_Sta::Clear()
{
if(Top != End)
{
Top = End;
}
}
int main()
{
char c;
cout<<"请输入数据:"<<endl;
Order_Sta sta;
while(cin>>c,c != '*')
{
if('@' == c)
{
sta.Clear();
}
else
if('#' == c)
{
char x = sta.Pop();
}
else
{
sta.Push(c);
}
}
cout<<"最终数据:"<<endl;
while(!sta.Empty())
{
char x = sta.Pop();
cout<<x<<" ";
}
cout<<endl;
return 0;
}
c++ 文字编辑器(栈的简答应用)
最新推荐文章于 2022-10-24 10:56:55 发布