C语言怎么利用栈和队列实现回文检测功能
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本文小编为大家详细介绍"C语言怎么利用栈和队列实现回文检测功能",内容详细,步骤清晰,细节处理妥当,希望这篇"C语言怎么利用栈和队列实现回文检测功能"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入
千家信息网最后更新 2025年02月23日C语言怎么利用栈和队列实现回文检测功能
本文小编为大家详细介绍"C语言怎么利用栈和队列实现回文检测功能",内容详细,步骤清晰,细节处理妥当,希望这篇"C语言怎么利用栈和队列实现回文检测功能"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
具体代码如下:
#include#include //内存分配头文件#include //在math.h中已定义OVERFLOW的值为3#define SIZE 100#define STACKINCREMENT 10#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef 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语言怎么利用栈和队列实现回文检测功能"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
队列
数据
功能
回文
语言
检测
文章
内容
指针
结构
妥当
个数
代码
全局
内存
变量
思路
文件
新知
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
海德联创网络技术有限公司
软路由架设ip服务器
网络安全回答十二题
灵武市软件开发需要多少钱
网络安全管理中最核心的要素
长沙鼎沃通信网络技术有限公司
服务器制作教程
技术装备和网络安全考核
中山中泰网络技术
网络安全三季度预增个股
杭州黑酷网络技术有限公司
pe服务器js
上海网业网络技术有限公司
网页重新安装后导入数据库出错
博兴陶瓷软件开发服务
交通运输局网络安全应急演练方案
国家网络安全为主题的海报
网络安全 教材
王牌战争服务器怎么获得石斧
mysql 添加到服务器
网络安全回顾
回声数据库
网络技术对党员干部影响
办公软件开发平台
南京高付宝网络技术有限公司
中美科技互联网公司对比
手机媒体服务器下载
mysql怎么添加数据库
服务器安全整改措施
软件开发术语名词