运算级自增自减运算符大于取值运算符*,大于取地址运算符!
1 #include<stdio.h> 2 #include<string.h> 3 #define OK 1 4 #define ERROR 0 5 typedef char ElemType; 6 typedef int Status; 7 typedef struct Stack1 8 { 9 ElemType data; 10 struct Stack1 *next; 11 }Stack1,*SqlStack1; 12 //初始化一个栈 13 Status Init(SqlStack1 &L) 14 { 15 L->next=NULL; 16 return 0; 17 } 18 //进栈操作 19 Status In(SqlStack1 &L,ElemType e) 20 { 21 SqlStack1 p; 22 p=new Stack1; 23 p->data=e; 24 p->next=L; 25 L=p; 26 return OK; 27 } 28 //出栈操作 29 ElemType Out(SqlStack1 &L) 30 { 31 ElemType r; 32 r=L->data; 33 L=L->next; 34 return r; 35 } 36 int main() 37 { 38 SqlStack1 L; 39 int s_length; 40 int result=0; 41 L=new Stack1; 42 char s[20]; 43 ElemType c1,c2; 44 printf("请输入想要判断的字符串:"); 45 scanf("%s",&s); 46 s_length=strlen(s); //取得要判断的字符串长度 47 //进栈操作 48 for(int k=1;k<=s_length/2;k++) 49 { 50 In(L,s[k-1]); 51 } 52 if(s_length%2==0) //判断字符串长度是奇数还是偶数 53 { 54 for(int i=1;i<=s_length/2;i++) 55 { 56 c1=Out(L); 57 c2=s[s_length/2+i-1]; 58 if(c1==c2) //进行判断 59 { 60 result=1; 61 continue; 62 } 63 else 64 { 65 result=0; 66 break; 67 } 68 } 69 } 70 else 71 { 72 for(int j=1;j<=s_length/2;j++) 73 { 74 c1=Out(L); 75 c2=s[s_length/2+j]; 76 if(c1==c2) //进行判断 77 { 78 result=1; 79 continue; 80 } 81 else 82 { 83 result=0; 84 break; 85 } 86 } 87 } 88 //输出操作 89 if(result==1) 90 { 91 printf("该字符串是回文字符串!"); 92 } 93 else 94 { 95 printf("该字符串不是回文字符串!"); 96 } 97 return 0; 98 }