读入的一个以@为结束符的字符序列是否为回文
来源:网络收集 点击: 时间:2024-05-20头文件建立
#include stdafx.h
#includeiostream
using namespace std;
#define START 100;
#define LATER 10;

结构体的建立
typedef struct QNode
{
QElemType data;
struct QNode * next;
}QNode,*Queueptr;
typedef struct
{
Queueptr front;
Queueptr rear;
}LinkQueue;
typedef char SElemType;
typedef char QElemType;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}stack;

栈和对列的基本操作
char push(stacks,SElemType e)
{
if (s.top -s.base =s.stacksize )
{
s.base =(SElemType*)realloc(s.base ,(s.stacksize +10)*sizeof(SElemType));
if(!s.base)exit(OVERFLOW);
s.top =s.base +s.stacksize ;
s.stacksize +=10;
}
*s.top ++=e;
return 1;
}
char pop(stacks,SElemTypee)
{
if(s.top ==s.base )return 0;
e=*--s.top ;
coute;
return e;
}
char EnQueue(LinkQueueq,QElemType e)
{
p = (Queueptr)malloc(100*sizeof(QNode));
if(!p)exit(OVERFLOW);
p-data=e;
p-next=p;
q.rear -next =p;
q.rear =p;
return 1;
}
char DeQueue(LinkQueueq,QElemTypee)
{
if(q.front ==q.rear )return 5;
p=q.front-next ;
e=p-data;
q.front -next =p-next;
if(q.rear ==p)q.rear =q.front ;
coute;
free(p);
return e;
}

结果 测试

栈和对列的建立
char InitQueue(LinkQueueq)
{
q.front =q.rear =(Queueptr)malloc(100*sizeof(QNode));
if(!q.front )exit(OVERFLOW);
q.front -next= NULL;
return 1;
}
Queueptr p;
char InitStack(stacks)
{
s.base =(SElemType*)malloc(100*sizeof(SElemType));
if(!s.base )exit(OVERFLOW);
s.top =s.base ;
s.stacksize =100;
return 1;
}

主函数的调用
int _tmain(int argc, _TCHAR* argv)
{
int x=0;
QElemType f;
LinkQueue q;
SElemType a;
stack s;
InitStack(s);
InitQueue(q);
int b=0;
char c;
cout请?输º?入¨?串ä?;
cinc;
while (c != @)
{
push(s,c);
EnQueue(q, c);
b++;
}
for (int i=0;ib;i++)
{
char m=pop(s,a);
char n=DeQueue(q,f);
if(m!=n)
{cout不?是º?回?文?endl; break;}
}
cout是º?回?文?endl;
return 0;
}

版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_812657.html