当前位置:首页 > 数据结构 栈和队列基本操作
top->next=q->next; free(q); }
//队列
typedef struct QNode { char data;
struct QNode *next; }QNode,*QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue;
//构造一个空队列 Q
void InitQueue(LinkQueue &Q) {
Q.rear=Q.front=(QueuePtr)malloc(sizeof(QNode)); Q.front->next=NULL; }
void EnQueue(LinkQueue &Q,char e) {
QNode *p;
p=(QueuePtr)malloc(sizeof(QNode)); p->data=e;
p->next=NULL; Q.rear->next=p; Q.rear=p; }
void DeQueue(LinkQueue &Q,char &e2) {
QNode *p;
p=Q.front->next; e2=p->data;
Q.front->next=p->next; if(Q.rear==p) Q.rear=Q.front; free(p);
}
//回文判断函数
int Huiwen(LinkStack &S,LinkQueue &Q) {
char e1,e2; while(1) { Pop(S,e1); DeQueue(Q,e2); if(S->next==NULL&&Q.front==Q.rear) { return 1; } if(e1!=e2) { return 0; } } }
void main() {
char e,e1,e2; LinkStack S; InitLinkStack(S); LinkQueue Q; InitQueue(Q);
printf(\请输入字符串:\\n\ while(1) { scanf(\ if(e=='\\n') break; Push(S,e); EnQueue(Q,e); }
/*
while(1)
}
{ Pop(S,e1); DeQueue(Q,e2); if(S->next==NULL&&Q.front==Q.rear) { printf(\字符串是回文字符串!\\n\ break; } if(e1!=e2) { printf(\字符串不是回文字符串!\\n\ break; } } */ int a;
a=Huiwen(S,Q); if(a==1) printf(\字符串是回文字符串!\\n\else if(a==0) printf(\字符串不是回文字符串!\\n\
共分享92篇相关文档