这一篇博客以一些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; }