第8章十一题关键函数
2006-04-20 21:25
316 查看
#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;
}
#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;
}
相关文章推荐
- 网络通信关键函数理解
- 犀牛——第8章函数 8.1 函数定义
- 第8章(1) 进程控制 -fork函数
- 函数之关键参数
- PHP(黑白名单)验证URL是否有效的关键函数
- XNA开发中的关键函数总结
- 第8章 函数(九)拾遗
- 第8章 函数(十) 小结
- 3D Camera->双目标定关键函数解析
- 第8章 信号(4)_中断的系统调用和函数可重入性
- QT 信号槽connect中解决自定义数据类型或数组作为函数参数的问题——QT qRegisterMetaType 注册MetaType——关键:注册自定义数据类型或QMap等容器类
- [python] 第7章 函数 第8章 模块
- ios学习--KVO模式关键函数
- udp 编码的connect 函数 ——unix 网络编程 第8章
- 第8章——函数探幽
- 第8章 分析函数
- URL处理两个关键的函数parse_str与http_build_query
- 第8章 C++函数的高级特性
- 初步概要设计关键函数
- 犀牛——第8章函数8.5作为命名空间的函数