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