[求助]请教回文问题
最后调试 总是不能得出结果 利用栈判断是否是回文#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <math.h>
#define OK 1
#define ERROR 0
typedef int Status;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int struct;
typedef struct
{char *base;
char *top;
char stacksize;
}SqStack;
Status InitStack(SqStack &s)
{
s.base=(char *)malloc(sizeof(char));
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
Status push(SqStack *s,char e)
{
if((*s).top-(*s).base>=(*s).stacksize)
{(*s).base=(char*)realloc((*s).base,((*s).stacksize+STACKINCREMENT)*sizeof(char));
if(!(*s).base) return ERROR;
(*s).top=(*s).base+(*s).stacksize;
(*s).stacksize+=STACKINCREMENT;
}
*((*s).top)++=e;
return OK;
}
Status pop(SqStack *s,char *e)
{
if((*s).base==(*s).top) return ERROR;
*e=*--(*s).top;
return OK;
}
Status StackEmpty(SqStack s)
{
if(s.base==s.top) return OK;
else return ERROR;
}
void main()
{char ch1[50],ch2[50],e;int i=0;SqStack s;
InitStack(s);
printf("请输入字符串:");
scanf("%s",ch1);
while(ch1[i]!='\0')
push(&s,ch1[i++]);
i=0;
while(!StackEmpty(s))
{pop(&s,&e); ch2[i++]=e;
}
/*for(i=0;i<n;i++)
if(ch1[i]=!ch2[i]) break;*/
if(!strcmp(ch1,ch2)) printf("输入的字符串是回文\n");
else printf("输入的字符串不是回文\n");
}
----------------解决方案--------------------------------------------------------
这个题我也想知道!
前些天老师讲过了的,可惜我忘记了。
哎 帮忙吧
----------------解决方案--------------------------------------------------------
这么复杂.用了栈.
for(i=0;j=strlen(str)-1;i<j;i++,j--)
{
if(str[i]!=str[j])
{
return 0;
}
}
return 1;
----------------解决方案--------------------------------------------------------
谢谢楼上的 我运行调试了 还是不能得出结果...
----------------解决方案--------------------------------------------------------