本文实例讲述了C语言用栈和队列实现的回文功能。分享给大家供大家参考,具体如下:
#include<stdio.h>
#include<malloc.h>//内存分配头文件
#include<math.h>//在math.h中已定义OVERFLOW的值为3
#define SIZE 100
#define STACKINCREMENT 10
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef struct //栈的结构体
{
char a;
} SElemType;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
} SqStack;
typedef struct //QNode //队列的结构体
{
char b;
struct QNode * next;
} QNode,*QueuePtr;
typedef struct // 链队列类型
{
QueuePtr front; // 队头指针
QueuePtr rear; // 队尾指针
} LinkQueue;
//定义全局变量
SqStack S;
SElemType e;
LinkQueue Q;
QueuePtr p;
char f;
//栈操作
Status InitStack(SqStack *S)
{
S->base=(SElemType *)malloc(SIZE*sizeof(SElemType));
if(!S->base) exit(OVERFLOW);
S->top=S->base;
S->stacksize=SIZE;
return OK;
}
Status Push(SqStack *S,SElemType e)
{
if(S->top-S->base>=S->stacksize)
{
S->base=(SElemType *)malloc((S->stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!S->base) exit(OVERFLOW);
S->top=S->base+S->stacksize;
S->stacksize+=STACKINCREMENT;
}
*S->top++=e;
return OK;
}
Status Stackempty(SqStack S)//栈是否为空
{
if(S.top==S.base)
return TRUE;
else
return FALSE;
}
Status Pop(SqStack *S,SElemType *e)
{
if(S->top==S->base) return ERROR;
*e=*--S->top;
return OK;
}
Status StackLength(SqStack S)//求栈的长度
{
return (S.top-S.base);
}
//队列操作
Status InitQueue(LinkQueue *Q)
{
Q->front=(QueuePtr)malloc(sizeof(QNode));
Q->rear=Q->front;
if(!Q->front) exit(OVERFLOW);
Q->front->next=NULL;
return OK;
}
Status EnQueue(LinkQueue *Q,char f)
{
p=(QueuePtr)malloc(sizeof(QNode));
if(!p) exit(OVERFLOW);
p->b=f;
p->next=NULL;
Q->rear->next=p;
Q->rear=p;
return OK;
}
Status DeQueue(LinkQueue *Q,char *f)
{
if(Q->front==Q->rear) return ERROR;
p=Q->front->next;
*f=p->b;
Q->front->next=p->next;
if(Q->rear==p)
Q->rear=Q->front;
free(p);
return OK;
}
Status QueueLength(LinkQueue Q)
{
int i=0;
p=Q.front;
while(Q.rear!=p)
{
i++;
p=p->next;
}
return i;
}
Status QueueEmpty(LinkQueue Q)
{
if(Q.front==Q.rear)
return TRUE;
else
return FALSE;
}
void main()
{
int i,m;
char n,a[20];
InitStack(&S);
InitQueue(&Q);
gets(a);
for(i=0; a[i]!='&'; i++) /////////// &前的数据进栈
{
e.a=a[i];
Push(&S,e);
}
for(i=i+1; a[i]!='\0'; i++) ////////// ‘ &'后的数据进入队列
EnQueue(&Q,a[i]);
if( StackLength(S)!=QueueLength(Q)) /////栈和队列的数据个数不一样
printf("NO!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
else
while(!Stackempty(S)&&!QueueEmpty(Q))///////栈和队列里还有数据
{
Pop(&S,&e);
m=e.a;
DeQueue(&Q,&f);
n=f;
if(m!=n)
{
printf("NO!!!!!!!!!!!!!!!!!!!!!!");
break;
}
}
if(m==n&&Stackempty(S)&&QueueEmpty(Q))
printf("YES!!!!!!!!!!!!!!!!!!!!!!");
}
运行结果:
希望本文所述对大家C语言程序设计有所帮助。
# C语言
# 栈
# 队列
# 回文检测
# C语言 浅谈栈与队列的定义与操作
# C语言数据结构进阶之栈和队列的实现
# C语言编程数据结构栈与队列的全面讲解示例教程
# C语言编程数据结构的栈和队列
# C语言中栈和队列实现表达式求值的实例
# C语言 表、栈和队列详解及实例代码
# 深入浅析C语言中堆栈和队列
# C语言超详细讲解栈与队列实现实例
# 给大家
# 所述
# 值为
# 为空
# 头文件
# 全局变量
# 讲述了
# STACKINCREMENT
# amp
# define
# SIZE
# ERROR
# int
# Status
# struct
# TRUE
# FALSE
# typedef
# OVERFLOW
# class
相关文章:
建站之星收费标准详解:套餐费用及年费价格表一览
php json中文编码为null的解决办法
,石家庄四十八中学官网?
javascript基本数据类型及类型检测常用方法小结
如何在IIS中新建站点并解决端口绑定冲突?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
如何解决ASP生成WAP建站中文乱码问题?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
太平洋网站制作公司,网络用语太平洋是什么意思?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
相册网站制作软件,图片上的网址怎么复制?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
常州企业建站如何选择最佳模板?
广东企业建站网站优化与SEO营销核心策略指南
宝塔Windows建站如何避免显示默认IIS页面?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
建站上传速度慢?如何优化加速网站加载效率?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
重庆市网站制作公司,重庆招聘网站哪个好?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站之星如何实现五合一智能建站与营销推广?
如何快速建站并高效导出源代码?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
如何选择建站程序?包含哪些必备功能与类型?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
建站之星安装失败:服务器环境不兼容?
定制建站流程解析:需求评估与SEO优化功能开发指南
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
如何做网站制作流程,*游戏网站怎么搭建?
建站之星如何一键生成手机站?
网站制作服务平台,有什么网站可以发布本地服务信息?
已有域名和空间如何搭建网站?
如何在自有机房高效搭建专业网站?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
如何用VPS主机快速搭建个人网站?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
制作网站怎么制作,*游戏网站怎么搭建?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
如何快速使用云服务器搭建个人网站?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
linux top下的 minerd 木马清除方法
如何设计高效校园网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。