当前位置: 代码迷 >> C语言 >> [求助]请教回文问题
  详细解决方案

[求助]请教回文问题

热度:279   发布时间:2007-04-14 19:24:38.0
[求助]请教回文问题
最后调试 总是不能得出结果 利用栈判断是否是回文
#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");

}

搜索更多相关的解决方案: 回文  char  define  include  base  

----------------解决方案--------------------------------------------------------
这个题我也想知道!
前些天老师讲过了的,可惜我忘记了。
哎 帮忙吧
----------------解决方案--------------------------------------------------------

这么复杂.用了栈.

for(i=0;j=strlen(str)-1;i<j;i++,j--)
{
if(str[i]!=str[j])
{
return 0;
}
}
return 1;


----------------解决方案--------------------------------------------------------

谢谢楼上的 我运行调试了 还是不能得出结果...


----------------解决方案--------------------------------------------------------
  相关解决方案