全网整合营销服务商

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

免费咨询热线: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 


相关文章: 建站之星收费标准详解:套餐费用及年费价格表一览  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小时内与您取得联系。