C語言利用棧判斷字串是否為迴文
阿新 • • 發佈:2019-01-10
#include<stdio.h> #include<string.h> #define OK 1 #define ERROR 0 typedef char ElemType; typedef int Status; typedef struct Stack1 { ElemType data; struct Stack1 *next; }Stack1,*SqlStack1; //初始化一個棧 Status Init(SqlStack1 &L) { L->next=NULL; } //進棧操作 Status In(SqlStack1 &L,ElemType e) { SqlStack1 p; p=new Stack1; p->data=e; p->next=L; L=p; return OK; } //出棧操作 ElemType Out(SqlStack1 &L) { ElemType r; r=L->data; L=L->next; return r; } int main() { SqlStack1 L; int s_length; int result=0; L=new Stack1; char s[20]; ElemType c1,c2; printf("請輸入想要判斷的字串:"); scanf("%s",&s); s_length=strlen(s); //取得要判斷的字串長度 //進棧操作 for(int k=1;k<=s_length/2;k++) { In(L,s[k-1]); } if(s_length%2==0) //判斷字串長度是奇數還是偶數 { for(int i=1;i<=s_length/2;i++) { c1=Out(L); c2=s[s_length/2+i-1]; if(c1==c2) //進行判斷 { result=1; continue; } else { result=0; break; } } } else { for(int j=1;j<=s_length/2;j++) { c1=Out(L); c2=s[s_length/2+j]; if(c1==c2) //進行判斷 { result=1; continue; } else { result=0; break; } } } //輸出操作 if(result==1) { printf("該字串是迴文字串!"); } else { printf("該字串不是迴文字串!"); } return 0; }