📄 huiwen.c
字号:
#include<stdio.h>
#define maxsize 50
typedef char DataType;
typedef struct
{
DataType queue[maxsize];
int rear;
int front;
int count;
}SeqCQueue;
void QueueInitiate(SeqCQueue *Q)
{
Q->rear=0;
Q->front=0;
Q->count=0;
}
int QueueNotEmpty(SeqCQueue *Q)
{
if(Q->count<=0)
return 0;
else return 1;
}
int QueueAppend(SeqCQueue *Q,DataType x) /*勿忘记写上DataType!x前莫打星号!*/
{
if(Q->rear==Q->front&&Q->count!=0)
{printf("It's full.\n");return 0;}
else
{
Q->queue[Q->rear]=x;
Q->rear=(Q->rear+1)%maxsize;
Q->count++;
return 1;
}
}
int QueueDelete(SeqCQueue *Q,DataType *x)
{
if(Q->count==0)
{printf("It's empty.\n");return 0;}
else
{
*x=Q->queue[Q->front];
Q->front=(Q->front+1)%maxsize;
Q-> count--;
return 1;
}
}
int QueueGet(SeqCQueue *Q,DataType *x)
{ /*只能取队头的元素!*/
if(Q->count==0)
{printf("It's empty.\n");return 0;}
else
{
*x=Q->queue[Q->front];
return 0;
}
}
typedef struct
{
DataType stack[maxsize];
int top;
}SeqStack;
void StackInitiate(SeqStack *S) /*原未写上SeqStack!形参也要写上类型!*/
{
S->top=0;
}
int StackNotEmpty(SeqStack *S)
{
if(S->top==0) /*书上写的是S.top<=0*/
return 0;
else return 1;
}
int StackPush(SeqStack *S,DataType x)
{
if(S->top>=maxsize) /*最后一个数的编号是maxsize-1,当=maxsize时就已经满足了*/
{
printf("It's full.\n");
return 0;
}
else
{S->stack[S->top]=x; /*应该写成S->top,不能直接写top,在此子函数中没有定义top*/
S->top++; /*原错同上*/
return 1;
}
}
int StackPop(SeqStack *S,DataType *x)
{
if(S->top<=0)
{
printf("It's empty.\n");
return 0;
}
else
{
S->top--;
*x=S->stack[S->top];
return 1;
}
}
int StackTop(SeqStack *S,DataType *x)
{
if(S->top<=0)
{
printf("It's empty.\n");
return 0;
}
else
{
*x=S->stack[S->top-1];
return 1;
}
}
void HuiWen(char str[])
{
SeqCQueue myqueue;
SeqStack mystack;
int i;char x,y;int flag=1;
QueueInitiate(&myqueue);
StackInitiate(&mystack);
for(i=0;str[i]!='\0';i++)
{
if(!QueueAppend(&myqueue,str[i]))
{system("pause");exit(0);}
if(!StackPush(&mystack,str[i]))
{system("pause");exit(0);}
}
for(i=0;str[i]!='\0';i++)
{
if(!(QueueDelete(&myqueue,&x)&&StackPop(&mystack,&y)&&x==y))
flag=0;
}
if(flag)
printf("%s is huiwen.\n",str);
if(!flag)
printf("%s is NOT huiwen.\n",str);
}
void main()
{
char a[]="abcdedcba";
char b[]="abcdedcab";
HuiWen(a);
HuiWen(b);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -