全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C语言用栈和队列实现的回文检测功能示例

本文实例讲述了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 


相关文章: 模具网站制作流程,如何找模具客户?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  建站主机如何安装配置?新手必看操作指南  历史网站制作软件,华为如何找回被删除的网站?  如何挑选高效建站主机与优质域名?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  css网站制作参考文献有哪些,易聊怎么注册?  ,有什么在线背英语单词效率比较高的网站?  如何在万网ECS上快速搭建专属网站?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  如何在阿里云域名上完成建站全流程?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  临沂网站制作企业,临沂第三中学官方网站?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  广东企业建站网站优化与SEO营销核心策略指南  济南网站建设制作公司,室内设计网站一般都有哪些功能?  建站之星如何优化SEO以实现高效排名?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  如何快速搭建高效香港服务器网站?  如何通过商城自助建站源码实现零基础高效建站?  php json中文编码为null的解决办法  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何解决ASP生成WAP建站中文乱码问题?  常州企业建站如何选择最佳模板?  免费视频制作网站,更新又快又好的免费电影网站?  建站主机选虚拟主机还是云服务器更好?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  如何在Tomcat中配置并部署网站项目?  建站之星如何助力企业快速打造五合一网站?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  公司网站设计制作厂家,怎么创建自己的一个网站?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  已有域名建站全流程解析:网站搭建步骤与建站工具选择  Python如何创建带属性的XML节点  北京网站制作网页,网站升级改版需要多久?  建站之星如何修改网站生成路径?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  北京企业网站设计制作公司,北京铁路集团官方网站?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  企业微网站怎么做,公司网站和公众号有什么区别?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  如何设计高效校园网站?  建站之星代理平台如何选择最佳方案?  ,怎么在广州志愿者网站注册?  如何在建站主机中优化服务器配置? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。