关于用C语言栈实现回文的判断

我自己写的程序,求大神看看哪个地方有问题没有#include<stdio.h>#include<string.h>#include<malloc.h>#defineTRU... 我自己写的程序,求大神看看哪个地方 有问题没有
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define TRUE 1
#define FALSE 0
#define StackSize 50
typedef struct
{
char data[StackSize];
int top;
}SeqStack;
//判断栈是否为空
int IsEmpty(SeqStack *s)
{
return(s->top==-1?TRUE:FALSE);
}
// 进栈
int Push(SeqStack *s,char x)
{
if(s->top==StackSize-1)return(FALSE);
s->top++;
s->data[s->top]=x;
return(TRUE);
}
// 取栈顶元素
int Pop(SeqStack *s,char *x)
{
if(s->top==-1)
return(FALSE);
else
{
*x=s->data[s->top];
s->top--;
return(TRUE);
}
}

//回文判断
int IsSame()
{ char ch,m,str[50];
int i=0,j=0;
SeqStack *p;
p = (SeqStack *)malloc(sizeof(SeqStack));
p->top = -1;
while((ch=getchar())!='\n')
{
Push(p,ch);str[i]=ch;i++;
printf("%d\n",i);
}

while(!IsEmpty(p))
{
Pop(p,&m);
if(m!=str[j++])
return FALSE;
}
return TRUE;
}

void main()
{ int temp;
printf("\t回文判断\n");
printf("输入字符序列\n");
temp=IsSame();
if(temp)
printf("yes!\n");
else printf("no\n");
}

运行没错误,我就想问一下,str中的\0不参与比较吗
展开
 我来答
百度网友0b9fc92
2013-10-10 · TA获得超过358个赞
知道小有建树答主
回答量:444
采纳率:100%
帮助的人:223万
展开全部

虽然已经采纳了我还是要说下,字符数组用字符串初始化才有'\0',才是字符串,用单个字符赋值得到的是一条字符,但不是字符串,因为没有'\0',看下面这个程序出错在哪里

mrdone
2013-10-10 · TA获得超过1143个赞
知道小有建树答主
回答量:2346
采纳率:100%
帮助的人:525万
展开全部
str中的 \0 只表示一个结束符,在比较的时候并不参与。
追问
我这个程序没什么问题吗
追答
。。。你不是只想问一下 \0 是不是不参与比较么?
程序如果运行正确的话,应该是没有问题的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1Programmer
2013-10-10
知道答主
回答量:29
采纳率:0%
帮助的人:21.6万
展开全部
运行下,结果跟预期一样不就知道有没有问题了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cjj796
2013-10-10 · TA获得超过8702个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3358万
展开全部
\0 是结束符,不参加比较
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式