关于用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不参与比较吗 展开
#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不参与比较吗 展开
展开全部
str中的 \0 只表示一个结束符,在比较的时候并不参与。
追问
我这个程序没什么问题吗
追答
。。。你不是只想问一下 \0 是不是不参与比较么?
程序如果运行正确的话,应该是没有问题的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
运行下,结果跟预期一样不就知道有没有问题了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
\0 是结束符,不参加比较
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询