注: 本题纯使用C语言进行编写
- 题目要求
要求使用C语言栈的方法来写一个代码判断字符串是否是对称字符串,比如abccba和abcba都属于中心对称,从左到右与从右到左来看都是相同的序列,它们就属于是对称字符串。是则输出yes,否则输出no。
以下是实现代码:
#include#include typedef struct { char data[1000]; int top; } SqStack; int main(void) { SqStack *s=(SqStack *)malloc(sizeof(SqStack)); s->top=-1;//初始顺序栈的栈顶下标为-1 int Maxsize; char str[1000]; gets(str); Maxsize=strlen(str);//获取字符串的长度并把它设为data数组的最大下标加一。 char e; int flag=0;//元素全部进栈 for(int i=0;str[i]!=' ';i++) { if(s->top==Maxsize-1) { return 0; } s->top++;//首先栈顶指针累加,再把元素存进栈顶指针处。 s->data[s->top]=str[i]; } for( int i=0;str[i]!=' ';i++) { if(s->top==-1) { return 0; } e=s->data[s->top];//元素出栈时首先把栈顶指针t op处的元素取出放在e中,再将栈顶指针减一。 s->top--; if(str[i]==e) { flag++; } } if(flag==Maxsize)// flag如果与元素个数相等即可知道所求字符串为对称字符串。 { printf("yes"); } else{ printf("no"); } return 0; }
由于本文是仓促完成,遗漏与不足在所难免,有好的建议和更好的方法可以在评论里提及,我们一起学习,一起进步。我是Vatij,一个不想写程序的bug菜鸟。



