十万火急,求助C++编程高手!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/16 00:03:20
请各位大虾帮我编下下面的程序,小弟将不胜感激!!
堆栈(Stack)是一种特殊的顺序存储表,只允许在表的一端(栈顶)进行插入和删除操作,另一端(栈底)则不允许插入和删除操作,堆栈的插入和删除通常称为入栈和出栈。栈顶的当前位置是动态的,用一个指针,即栈顶指针来标示栈顶当前位置。如下图所示:
堆栈可以用数组来表示,假设堆栈可保存的数据类型为ElemType。那么堆栈定义如下:
ElemType stack[MaxSize];
int top; //堆栈指针
堆栈相关的操作如下:
Void InitStack(Stack& S); //初始化堆栈S,即把它置为空;
Void push(ElemType item); //元素item进栈,即插入item到栈顶;
ElemType Pop( ); //弹出栈顶元素并返回其值;
ElemType Peek(); //返回栈顶元素的值,但不移动栈顶指针;
Bool IsEmpty(); //判断堆栈是否为空,是返回true;否则返回false;
Void ClearStack(); //清除堆栈中所有元素,使之成为一个空栈;
解决问题:
(1)根据上述提示实现一个堆栈;
(2)堆栈在计算机语言中的编译过程中用来进行语法检查,编写一个程序,利用堆栈来检查一个C/C++语言程序中的花括号、方括号和圆括号是否配对,若能够完全配对返回1,否则返回0

//不是很严谨,不过你可以参考.

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

const int MaxSize = 200;

class MyStack
{
private:
char stack[MaxSize];
char* top;
int len;
public:
MyStack();
void InitStack();
void Push(char item);
char Pop( );
char Peek();
bool IsEmpty();
void ClearStack();
};

MyStack::MyStack()
{
InitStack();
}

void MyStack::InitStack()
{
len = 0;
top = stack;
}

void MyStack::Push(char item)
{

if (len < 100)
{
stack[len] = item;
top = &stack[len];
len++;
}
else
{
cout << "The stack is full." <<endl;
}
}

char MyStack::Pop( )
{

if (!IsEmpty())
{
char tmp = *top;
top = &stack[len - 1