判断回文是一个很常见的使用栈(stack)来实现的小示例,它能够很轻松的利用“栈”这种数据结构来实现。同时,他也很好的体现了“栈”设计的基本实现和实现方法。
下面来谈一谈“栈”的设计思想:栈就像是可比克薯片的桶装的样子,想要吃到薯片就必须从上往下依次吃,放回去也只能放到最顶端。即“先进后出”,“栈”要求只能从栈顶操作——入栈和出栈。
好了,下面附上C语言实现的一个应用“栈”的小示例:判断回文。
#include "stdio.h"
#include "string.h"
struct stack{
int a[100];
int top;
};
int main()
{
int i, len, mid, next;
struct stack s;
s.top = 0;
char a[100];
printf("输入一个字符串: ");
gets(a);
len = strlen(a);
mid = len/2 - 1;
for(i=0; i<mid; i++)
{
s.a[s.top] = a[i];
s.top++;
}
if(len%2 == 0)
{
next = mid + 1;
}
else
{
next = mid + 2;
}
for(i=next; i<len-1; i++)
{
if(a[i] != s.a[s.top])
break;
s.top--;
}
if(s.top == 0)
printf("YES!");
else
printf("NO!");
return 0;
}