一个回文函数 可是就是无法执行 望高人解答
#include <stdio.h>#include <stdlib.h>
#include <malloc.h>
#define stack_size 50
#define TRUE 1
#define FALSE 0
typedef struct //定义一个栈
{
char elem[stack_size];
int top;
}SeqStack;
int InitStack(SeqStack *S) //构造一个顺序栈
{
S->top=-1;
return(TRUE);
}
int push(SeqStack *S,char x) //x进栈
{
S->top++;
S->elem[S->top]=x;
return(TRUE);
}
char pop(SeqStack *S) //x出栈
{
char a;
a=S->elem[S->top];
S->top--;
return(a);
}
typedef struct Node //定义一个队列
{
char data;
struct Node *next;
}LinkQueueNode;
typedef struct
{
LinkQueueNode *front;
LinkQueueNode *rear;
}LinkQueue;
int InitQueue(LinkQueue *Q) //初始化列表
{
Q->front=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
Q->rear=Q->front;
Q->front->next=NULL;
return(TRUE);
}
int EnterQueue(LinkQueue *Q,char x) //入列
{
LinkQueueNode *NewNode;
NewNode=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
NewNode->data=x;
NewNode->next=NULL;
Q->rear->next=NewNode;
Q->rear=NewNode;
return(TRUE);
}
char DeleteQueue(LinkQueue *Q) //出列
{
char a;
LinkQueueNode *p;
p=Q->front->next;
Q->front->next=p->next;
a=p->data;
free(p);
return(a);
}
void main()
{
SeqStack s;
InitStack(&s);
LinkQueue Q;
InitQueue(&Q);
char str;
int i=0;
while(str=getchar()!='@');
{
push(&s,str);
EnterQueue(&Q,str);
i++;
}
while(i>0)
{
char str1=pop(&s);
char str2=DeleteQueue(&Q);
printf("%c,%c",str1,str2);
if(str1!=str2)
{
printf("不是回文");
break;
}
i--;
}
printf("是回文");
}
[ 本帖最后由 a371375284 于 2012-3-19 17:39 编辑 ]