?? 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 + -