第8章十一题关键函数

来源:互联网 发布:眼睛红血丝 知乎 编辑:程序博客网 时间:2024/06/05 21:49

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

typedef char datatype;

typedef struct node
{
 datatype data;
 struct node * pNext;
}linklist;

typedef struct
{
 linklist *front,*rear;
}linkqueue;

void SETNULLQL(linkqueue *q)
{
 q->front=(linklist*)malloc(sizeof(linklist));
 q->front->pNext=NULL;
 q->rear=q->front;
}//置空队

bool EMPTYQL(linkqueue*q)
{
 if(q->front==q->rear)
  return true;
 else return false;
}//判断队空

datatype FRONTQL(linkqueue*q)
{
 if(EMPTYQL(q))
 {
  printf("队空");
  return -1;
 }
 else return(q->front->pNext->data);
}//取队头元素

void ENQUEUEQL(linkqueue *q,datatype x)
{
 q->rear->pNext=(linklist *)malloc(sizeof(linklist));
 q->rear=q->rear->pNext;
 q->rear->data=x;
 q->rear->pNext=NULL;
}//入队

datatype DEQUEUEQL(linkqueue*q)
{
 datatype temp;
 linklist * s;
 if(EMPTYQL(q))
 {
  printf("队空");
  return -1;
 }
 else{
  s=q->front->pNext;
  if(s->pNext==NULL)
  {
   q->front->pNext=NULL;
   q->rear=q->front;
  }
  else q->front->pNext=s->pNext;
  temp=s->data;
  free(s);
  return(temp);
 }
}//删除队头元素并返回队头元素

bool DuiChen(datatype *str)
{
 linkqueue*q;
 int n,i,j;
 datatype ch;
 i=0;
 n=strlen(str);
 q=(linkqueue*)malloc(sizeof(linkqueue));
 SETNULLQL(q);
 while(i<(n/2))
 {
  ENQUEUEQL(q,str[i]);
  i++;
 }
 i++;
 j=1;
 while(i<n)
 {
  ch=str[n-j];
  if(ch!=DEQUEUEQL(q))
   return false;
  j++;
  i++;
 }
 return true;
}//关键函数判断是否对称

int main()
{
 datatype str[100];
 printf("请输入字符串:");
 scanf("%s",str);
 if(DuiChen(str)){
  printf("是对称字符串。。。/n");
  return 1;
 }
 else{
  printf("不是对称字符串。。。/n");
  return 0;
 }
 return 0;
}

原创粉丝点击