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