用栈判断回文
#include<iostream>usingnamespacestd;#definestack_size50typedefstruct{charelem[stack_s...
#include<iostream>
using namespace std;
#define stack_size 50
typedef struct
{
char elem[stack_size];
int top;
int r;
}seqstack;
void intstack(seqstack *s)
{
s->top=-1;
s->r=s->top+1;
}
int push(seqstack *s,char x)
{
if(s->top==stack_size-1)
return(false);
s->top++;
s->elem[s->top]=x;
return(true);
}
int main()
{
seqstack a;
int flag=1;
char c;
intstack(&a);
cin>>c;
while(c!='@')
{
push(&a,c);
cin>>c;
}
a.top--;
while(a.r+1!=a.top)
{
if(a.elem[a.top]==a.elem[a.r])
{
a.top--;
a.r++;
}
else
flag=0;
}
if(flag)
cout<<"是回文";
else
cout<<"不是回文";
return 0;
}
上面程序不能执行。。我想知道哪出错了 展开
using namespace std;
#define stack_size 50
typedef struct
{
char elem[stack_size];
int top;
int r;
}seqstack;
void intstack(seqstack *s)
{
s->top=-1;
s->r=s->top+1;
}
int push(seqstack *s,char x)
{
if(s->top==stack_size-1)
return(false);
s->top++;
s->elem[s->top]=x;
return(true);
}
int main()
{
seqstack a;
int flag=1;
char c;
intstack(&a);
cin>>c;
while(c!='@')
{
push(&a,c);
cin>>c;
}
a.top--;
while(a.r+1!=a.top)
{
if(a.elem[a.top]==a.elem[a.r])
{
a.top--;
a.r++;
}
else
flag=0;
}
if(flag)
cout<<"是回文";
else
cout<<"不是回文";
return 0;
}
上面程序不能执行。。我想知道哪出错了 展开
2个回答
展开全部
#include<iostream>
using namespace std;
#define stack_size 50
typedef struct
{
char elem[stack_size];
int top;
int r;
}seqstack;
void intstack(seqstack *s)
{
s->top=-1;
s->r=s->top+1;
}
int push(seqstack *s,char x)
{
if(s->top==stack_size-1)
return(false);
s->top++;
s->elem[s->top]=x;
return(true);
}
int main()
{
seqstack a;
int flag=1;
char c;
intstack(&a);
cin>>c;
while(c!='@')
{
push(&a,c);
cin>>c;
}
a.top++;
a.elem[a.top] = '\0'; //字符数组要有结束符
a.top--;
int temp = a.top;
while(a.r+1!=temp) //存一临时变量,不然永远不相等
{
if(a.elem[a.top]==a.elem[a.r])
{
a.top--;
a.r++;
}
else
{
flag=0;
break;//设置跳出,不然退不出循环
}
}
if(flag)
cout<<"是回文";
else
cout<<"不是回文";
return 0;
}
若有疑问,请追问,满意请采纳
展开全部
#include<iostream>
using namespace std;
#define stack_size 50
typedef struct
{
char elem[stack_size];
int top;
int r;
}seqstack;
void intstack(seqstack *s)
{
s->top=-1;
s->r=s->top+1;
}
int push(seqstack *s,char x)
{
if(s->top==stack_size-1)
return(false);
s->top++;
s->elem[s->top]=x;
return(true);
}
int main()
{
seqstack a;
int flag=1;
char c;
intstack(&a);
cin>>c;
while(c!='@')
{
push(&a,c);
cin>>c;
}
a.top++;
a.elem[a.top] = '\0'; //字符数组要有结束符
a.top--;
int temp = a.top;
while(a.r+1<=a.top)
{
if(a.elem[a.top]==a.elem[a.r])
{
a.top--;
a.r++;
}
else
{
flag=0;
break;
}
}
if(flag)
cout<<"是回文";
else
cout<<"不是回文";
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询