判断字符串是否对称

来源:互联网 发布:大连新港716火灾知乎 编辑:程序博客网 时间:2024/04/29 00:44

栈实实现检测字符串是否对称

#include<stdio.h>#include<stdlib.h>#define MAX 100typedef struct stack{ char data[MAX]; int top;}SeqStack;void InitStack(SeqStack *&s){ s=(SeqStack*)malloc(sizeof(SeqStack)); s->top =-1;}void ClearStack(SeqStack *&s){ free(s);}int StackLength(SeqStack *&s){ return s->top +1;}int EmptyStack(SeqStack *&s){ return s->top ==-1;}int Push(SeqStack *&s,char ch){ if(MAX-1==s->top) {  printf("栈满/n");  exit(1); } else {       s->data [++s->top]=ch;// -> has high precdedence to ++    //printf("%c/n",ch); } return 0;}char Pop(SeqStack *&s){ if(-1==s->top ) {  printf("栈空/n");  exit(1); } else {  return s->data[s->top --]; }}void DispStack(SeqStack *&s){ for(int i=0;i<=s->top;i++) {  printf("%c/n",s->data[i]); }}int symmetry(SeqStack *&s,char a[]){    char ch='/0'; int i=0; for(i=0;a[i]!='/0';i++) {  Push(s,a[i]); } DispStack(s); for(i=0;a[i]!='/0';i++) {  ch=Pop(s);  if(a[i]!=ch)  {   printf("not symmetry!/n");   return 0;  } } printf("successfully symmetry/n"); return 1;}int main(){ char a[MAX]={'a','b','c','b','a'};//注意应该为其分配空间, //char a[]={'a','b','c','b','a'}; SeqStack *s; InitStack(s); symmetry(s,a); return 0;}


原创粉丝点击