C语言怎么利用栈和队列实现回文检测功能
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,本文小编为大家详细介绍"C语言怎么利用栈和队列实现回文检测功能",内容详细,步骤清晰,细节处理妥当,希望这篇"C语言怎么利用栈和队列实现回文检测功能"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入
千家信息网最后更新 2025年11月06日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安全错误
数据库的锁怎样保障安全
怎么更新数据库最后一行
iphone11网络安全过低
网络安全与新媒体专业
河南存储服务器机箱品牌
网络安全光柱
智能电网网络安全演讲
java数据库缓存实现
服务器管理员密码策略修改
pass软件开发平台
服务器购买方案
查域名服务器地址
山东聚商网络技术有限公司
vba 读文件一行数据库
discuz 数据库破解
网络安全考核办法实施方案
网络安全漏洞处置情况
aesscc数据库
软件开发 常用ide
西工大数据库教材
关于网络安全的手抄报的字
国外速度快的服务器
知网 查重数据库
服务器交换背板
网络安全登记保护政策
部队网络安全的授课
软件开发部工作标准
网络安全策划案例
群晖 搭服务器
违反国铁集团网络安全红线后果
继续教育信息化网络安全考试答案