现在的位置: 首页 > 综合 > 正文

栈初探(判断回文)

2017年11月21日 ⁄ 综合 ⁄ 共 556字 ⁄ 字号 评论关闭

栈是一种后进后出的数据结构,限定为只能在一端进行插入和删除操作。栈的实现需要一个一维数组和一个指向栈顶的变量top。

举例:判断字符串是否为回文串(如果一个字符串是回文的话,那么它必须是中间对称的,求出中点mid,然后将mid之前的字符全部入栈。关键步骤是将当前栈中的字符依次出栈,判断能否与mid之后的字符一一匹配)

#include<stdio.h>
#include<string.h>
int main(void)
{
	char a[101], s[101];
	int i, len, mid, next, top;
	
	scanf("%s", s);
	len = strlen(a);
	mid = len/2 -1;
	
	top = 0; // 栈的初始化
	//将mid前的字符依次入栈 
	for(i = 0; i <= mid; i++) {
		s[++top] = a[i];
	}
	
	//判断字符串的长度是奇数还是偶数, 并找出需要进行字符匹配的起始下标 
	if(len % 2 ==0 ) {
		next = mid + 1;
	}else {
		next = mid + 2;
	} 
	//开始匹配
	for(i = next; i <= len - 1; i++) {
		if(a[i] != s[top]) break;
		top--;
	} 
	//如果top的值为0,则说明栈内所有的字符都被一一匹配了
	if(top == 0)
	  printf("YES");
	else
	  printf("NO"); 
}
【上篇】
【下篇】

抱歉!评论已关闭.