做这个题时遇到个bug,即main()中的第一句,我定义了指针str_input用来装输入的字符串,但是后面赋值操作却用了get(),如果要用get()读入字符串的话就应该将str_input定义为数组,编译时没有报错,但运行时出错。我调试的时候一直以为bug在IsPlalindrome()里面,耽误了很久的时间。基础知识不够牢固啊!
#include <stdio.h>
#include <string.h>
const int TRUE = 1;
const int FALSE = 0;
const int STR_MAX_SIZE = 100;
typedef int STATUS;
typedef char ElementType;
typedef struct
{
int stack_size;
ElementType *top;
ElementType *base;
}STACK;
STATUS IsPlalindrome(char* s);
int main()
{
// char *str_input; //之前这么定义的,导致程序在gets(str_input)处出错,后改成下一句
char str_input[STR_MAX_SIZE];
printf("\n请输入待检测的字符串:");
gets(str_input);
if(IsPlalindrome(str_input))
{
printf("\n是回文字符串!");
}
else
{
printf("\n不是回文字符串!");
}
return 0;
}
STATUS IsPlalindrome(char* s)
{
int len;
char *p;
STACK stack;
len = strlen(s) / 2;
p = s;
stack.base = new char [len];
stack.top = stack.base;
stack.stack_size = len;
for(int i = 0; i < stack.stack_size; i++)
{
*(stack.top) =