这个 'for' 反向堆栈循环如何影响前端堆栈?(使用堆栈的平衡括号问题)

How this 'for' loop for reverse stack affecting front stack?(Balanced brackets problem using stacks)

我需要分隔一系列括号来检查它是否平衡。我的方法是将序列分成相等的两半,然后将它们压入单独的堆栈。 当我尝试将序列的第二半推入反向堆栈时出现问题。它正在影响第一个堆栈。我不知道为什么会这样,如果我删除代码的第二个半序列部分,第一个堆栈工作正常。下面是代码,我还将附加带有和不带有第二个堆栈效果的输出。

#include <iostream>
#include <string>

using namespace std;

char front_stack[]={};
char rev_stack[]={};
int topf=0,topr=0;

void push_fr(char);
void push_re(char);

int main()
{
    string seq;
    cin>>seq;

    int len=seq.length();

    for(int i=0;i<len/2;i++){
        front_stack[i]=seq[i];
    }

    for(int i=0;i<len/2;i++)
        cout<<front_stack[i]<<endl;

    for(int i=3,j=0;i<len;i++)
        rev_stack[j]=seq[i];

    for(int i=0;i<len/2;i++)
        cout<<front_stack[i]<<endl;
}

输出:

Sequence --{[()]}
Before adding second stack
First stack's output
{
[
(
After adding to second stack
First stack's output
{
}
(

谢谢。

您的数组中有 0 个项目,因此当您执行 front_stack[0]front_stack[1]、...时,您将覆盖其他一些变量。

如果您想将数据存储在数组中,您需要让它们实际包含一些项目,例如char front_stack[100]char rev_stack[100]

顺便说一句,你不需要={}在这个程序中。