回文判断-数据结构-栈

试编写一个算法,判断一次读入的一个以@结束符的字母序列是否为形容序’列1&序列2‘模式的字符序列。其中序列1 和序列2都不含字符&且序列2是序列1的你序列。列入,“a+b&b+a”时属于该模式的字符序列,而”1+3&3-1“不是

#include<stdio.h>
#include<string.h> 
#include<stdlib.h>
typedef struct//使用栈 
{char a[10];
 int tap;
 }seqstack;
 seqstack *p;
void fanxiang(char *q,char *h,char a[10],char b[10]);
void compare(char a[10],char b[10]);
int main()
{char a[10];
 char b[10];
char *q;
char *h;
p=(seqstack *)malloc(sizeof(seqstack));
memset(a,0,sizeof(a));//对a和b初始化 
memset(b,0,sizeof(b));
fanxiang(q,h,a,b);
compare(a,b);
}
void compare(char a[10],char b[10])
{ 
int i=0,j=1;int flog=0;//flog 为判断标志是否相同 
 while(a[i]!='@')
 {if(a[i]==b[j])
 {flog++; 
  i++;
  j++;}
  else 
  {flog=-1; 
   printf("不是回文序列");
   break;//不是回文序列直接跳出 
   }
}
if(flog>0)
printf("是回文序列"); 
}
void fanxiang(char *q,char *h,char a[10],char b[10])
{int i=0;
p->tap=0;
q=a;//标记a 
scanf("%c",q);//输入字符 
for(;*q!='@';)
{q++;
scanf("%c",q);}
q=a;
h=b;
 if(*q=='@')
 printf("error");
 else 
 {
 while(*q!='@') 
 {p->a[p->tap ]=*q;//输入a进入栈 
   q++;
   p->tap++;
 }
 p->a[p->tap ]='@';
 }
 while(p->tap>=0 )//利用栈的特性输出进入b 
 {b[i]=p->a[p->tap ];
 i++;
 p->tap--; }
free(p);//将栈放空 
} 
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值