C语言怎么利用栈和队列实现回文检测功能
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本文小编为大家详细介绍"C语言怎么利用栈和队列实现回文检测功能",内容详细,步骤清晰,细节处理妥当,希望这篇"C语言怎么利用栈和队列实现回文检测功能"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入
千家信息网最后更新 2026年10月31日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安全错误
数据库的锁怎样保障安全
互联网佳科技有限公司
互联网科技巨头监管
科技企业和互联网企业
互联网与科技发展
互联网 卓越科技
电子科技大学互联网
互联网金融 科技创新
亿人帮互联网科技
互联网科技产品
宁波青枫互联网科技有限公司
互联网科技中介
现代互联网科技股
互联网科技公司实习生
银川新华互联网科技学校联系电话
畅思互联网科技
群盈汇互联网科技有限公司
中天科技中国工业互联网
浙南科技城互联网大厦招聘
互联网时代高科技布局
网互联网络科技
瑰夏咖啡
中国 科技 互联网
西安互联网科技公司
互联网科技网站
速维有品互联网信息科技(苏州)有限公司
坤平互联网科技
互联网科技包装股份有限公司上市
福仕德教育科技互联网
北京军民互联网科技公司
河南商务圈互联网科技有限公司