判断一个字符串是不是回文序列
程序员文章站
2022-06-03 15:49:56
...
上两周学习栈和队列的时候老师布置了一个上机作业,题目非常的简单,用最基本的栈和队列都能做到,今天分享给大家,题目是这样的
判断一个字符串是不是回文序列,例如 ‘‘aba’’,’‘adda’’ 都是回文序列
代码如下
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct stack{
char c[100];
int top;}; /*建立一个栈*/
void voidstack(struct stack *p)
{
p->top=0; /*置空栈*/
}
int enterstack(struct stack *p,char c)
{
p->c[p->top]=c; /*进栈*/
p->top++;
}
int printstack(struct stack *p)
{
p->top--;
return p->c[p->top]; /*出栈*/
}
struct queue{
char c[100];
int base; /*定义一个队列*/
int top;};
void voidqueue(struct queue *q)
{
q->base=-1; /*置空队列*/
q->top=-1;
}
void enterqueue(struct queue *q,char c)
{
q->top++; /*进队列*/
q->c[q->top]=c;
}
int printqueue(struct queue *q) /*出队*/
{
q->base++;
return q->c[q->base];
}
void main()
{ char c,a,b;
struct stack *p;
struct queue *q;
p=(struct stack *)malloc(sizeof(struct stack));
q=(struct queue *)malloc(sizeof(struct queue));
voidstack(p);
voidqueue(q);
printf("请输入要判断的字符串\n");
while(1)
{ c=getchar();
if(c=='@ ') /*@代表结束*/
break;
enterstack(p,c);
ernerqueue(q,c);
}
while(1)
{
a=printstack(p);
b=printqueue(q);
if(a!=b)
{
printf(" 不是回文\n");break;
}
if(p->top==0&&p->c[0]==q->c[0])
{ printf("是\n");
break;
}
}
}
看效果
其中@代表结束字符串输入
上一篇: 1099元起!京东长辈智能手机正式发布:远程协助、在线问诊
下一篇: 微信小程序常用赋值方法小结