(数据结构整理)NJUPT1054

2014-11-24 13:23:10 · 作者: · 浏览: 23

这一篇博客以一些OJ上的题目为载体,整理一下数据结构。会陆续的更新。。。

我们都知道,数据结构的灵活应用有时能让简化一些题目的解答。

一、栈的应用

1、NJUPT OJ 1054(回文串的判断)

回文串的判断:将一个字符串的一半存入一个栈中,然后从栈顶开始判断这个字符串是否是回文串

/*
 * NJUPTOJ_1054.cpp
 *
 *  Created on: 2014年5月22日
 *      Author: pc
 */

#include 
  
   
#include 
   
     using namespace std; const int maxn = 300; void toLower(char arr[],int len){ int i; for(i = 0 ; i < len ; ++i){ if(!islower(arr[i])){ arr[i] += 32; } } } int main(){ char a[maxn]; char s[maxn]; while(gets(a)!=NULL){ int len = strlen(a); toLower(a,len); int mid = len/2 - 1; int top = 0; int i; for(i = 0 ; i <= mid ; ++i){ s[++top] = a[i]; } int next; if(len%2 == 0){ next = mid+1; }else{ next = mid+2; } for(i = next ; i <= len-1 ; ++i){ if(s[top] != a[i]){ break; } --top; } if(top != 0){ printf("Not Palindrome.\n"); }else{ printf("Bingle! Palindrome.\n"); } } return 0; }