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

2025-03-03 10:41:10
推荐回答(1个)
回答1:

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

#include
#include
#include

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." < }
}

char MyStack::Pop( )
{

if (!IsEmpty())
{
char tmp = *top;
top = &stack[len - 1];
len--;
return tmp;
}
else
{
cout << "The stack is empty." < return '\0';
}
}

char MyStack::Peek()
{
if (!IsEmpty())
{
return *top;
}
else
{
cout << "The stack is empty." < return '\0';
}
}

bool MyStack::IsEmpty()
{
cout << "the length of stack is " << len << endl;
return len < 0;
}

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

int main()
{
MyStack myStack;
ifstream fin;
string strLine;
bool result = false;

myStack.InitStack();

fin.open("test.txt");
if(fin.fail())
{
cout << "File open error!";
exit(1);
}
int i = 0;
while(getline(fin,strLine)) //读取行,检查{}是否配对
{
i = 0;
while( '\0' != strLine[i])
{
if ('{' == strLine[i])
{
myStack.Push('{');
}
else if ('}' == strLine[i] && '{' == myStack.Peek())
{
myStack.Pop();
}
i++;
}
}

result = !(myStack.IsEmpty()); //如果栈为空,刚说明配对.
cout << result << endl;

return 0;
}