#include <stdio.h>
#include <stdlib.h>
#define max 20
typedef struct
{
char data[20];
int front;
int rear;
}queque;
typedef struct
{
char data[20];
int size;
}stack;
void initque(queque *q)
{
q->front=q->rear=0;
}
void initstack(stack *s)
{
s->size=0;
}
void push(stack *s,char x)
{
if(s->size==20)
{
printf("栈满了\n");
}
else
{
s->data[s->size]=x;
s->size=(s->size+1);
}
}
char popstack(stack *s)
{
char z;
if(s->size==0)
{
printf("栈空\n");
return '0';
}
else
{
z=s->data[s->size];
s->size=(s->size-1);
return z;
}
}
void enterque(queque *q,char x)
{
if((q->rear+1)%20==q->front)
{
printf("队列已满\n");
}
else
{
q->data[q->rear]=x;
q->rear=(q->rear+1);
}
}
char popque(queque *q)
{
char c;
if(q->front==q->rear)
{
printf("队列一空\n");
return '0';
}
else{
c=q->data[q->front];
q->front=(q->front+1);
return c;
}
}
/*int stackempty(stack *s)
{
if(s->size==0)
{
return 0;
}
else return 1;
}*/
int define(stack *s,queque *q)
{
char v;
int flag=1;
printf("请输入需要判断回文的字符串:\n");
while((v=getchar())!='#')
{
push(s,v);
enterque(q,v);
}
/*while(stackempty(s))*/
while(q->front==q->rear)
{
if(popstack(s)!=popque(q))
{
flag=0;
break;
}
}
if(flag==1) printf("是回文字符串\n");
else printf("不是回文字符串\n");
return 0;
}
int main(int argc, char *argv[])
{
stack *s=(stack *)malloc(sizeof(stack));
queque *q=(queque *)malloc(sizeof(queque));
initstack(s);
initque(q);
define(s,q);
return 0;
}
使用栈和队列判断是否是回文字符
最新推荐文章于 2023-10-17 23:27:25 发布