大学程序实验.数据结构.栈和队列的应用一.判断"回文"问题 0 目录 3 栈和队列的应用 3.1 判断"回文"问题 3.1.1 题目 3.1.2 源码 1.1.3 下载
大学程序实验.数据结构.栈和队列的应用一.判断"回文"问题
- 0 目录
- 3 栈和队列的应用
- 3.1 判断"回文"问题
- 3.1.1 题目
- 3.1.2 源码
- 1.1.3 下载
- 2 下一章
0 目录
3 栈和队列的应用
3.1 判断"回文"问题
3.1.1 题目
问题描述:所谓回文,是指从前向后顺读和从后向前倒读都一样的字符串。例如,did; pop; I was able elba saw I 等等。
实验要求:利用栈结构判断一个字符串是否是“回文”。
3.1.2 源码
/************************************************************************ 头文件包含
***********************************************************************/
/***********************************************************************
* 本地宏定义
***********************************************************************/
typedef int Status;
typedef char SElemType;
typedef struct
{
SElemType data[MAX];
int top;
}SqStack;
/*********************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
Status main()
{
void StackMenu();
Status Push(SqStack *s,SElemType e);
SElemType Pop(SqStack *s);
Status Palindromice(SElemType array[]);
SElemType array[VALUE];
StackMenu();
while(1)
{
printf("请输入一节字符串:");
gets(array);
if(array[0]!='\0')
{
int Re=Palindromice(array);
if(Re==1)
{
printf("该字符串是回文.\n");
}
else
{
printf("该字符串不是回文.\n");
}
}
else
{
printf("该字符串不是回文.\n");
}
printf("\n");
}
return OK;
}
/*********************************************************************
* 函 数 名 : StackMenu
* 函数功能 : 目录函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
void StackMenu()
{
printf("========回文判断========\n");
}
SqStack * InitStack()
{
SqStack *s;
s=(SqStack *)malloc(sizeof(SqStack));
s->top=-1;
return s;
}
/*********************************************************************
* 函 数 名 : Push
* 函数功能 : 压栈函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
Status Push(SqStack *s,SElemType e)
{
if(s->top==MAX-1)
{
printf("栈满!\n");
return ERROR;
}
else
{
s->top++;
s->data[s->top]=e;
}
return OK;
}
/*********************************************************************
* 函 数 名 : main
* 函数功能 : 弹栈函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
SElemType Pop(SqStack *s)
{
SElemType value;
if(s->top==-1)
{
printf("栈空!");
return 'e';
}
else
{
value=s->data[s->top];
s->top--;
return value;
}
}
/*********************************************************************
* 函 数 名 : main
* 函数功能 : 回文函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
Status Palindromice(SElemType array[])
{
int i;
SqStack *s;
s=InitStack();
int Stack_LEN=strlen(array);
SElemType e;
for(i=0;i<Stack_LEN/2;i++)
{
Push(s,array[i]);
}
if(Stack_LEN%2)
{
i++;
}
while(i<Stack_LEN)
{
e=Pop(s);
if(e==array[i])
{
i++;
}
else
{
return ERROR;
break;
}
}
return OK;
}
1.1.3 下载
链接地址: 3.1_栈与回文.CPP
2 下一章
博客地址: 大学数据结构实验(三.栈和队列的应用二)