| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 350 人关注过本帖
标题:请问哪里出错了呢??循环队列
只看楼主 加入收藏
lqh134170985
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-12-1
收藏
 问题点数:0 回复次数:3 
请问哪里出错了呢??循环队列
#include "stdio.h"
#include "malloc.h"
#define QueueSize 20
/*#define ERROR 0
#define OK 1*/
#define MAXQSIZE 100
typedef int QElemType;
typedef struct
{
 QElemType *base;
 int front;
 int rear;
}SqQueue;

SqQueue * InitQueue ()
{
 SqQueue *Q;
 Q=(SqQueue*)malloc(MAXQSIZE*sizeof(SqQueue));

 Q->front=Q->rear=0;
 return Q;
}
void EnQueue(SqQueue *Q,QElemType e){

 if((Q->rear+1)%MAXQSIZE==Q->front) printf("溢出");;
Q->base[Q->rear]=e;
 Q->rear=(Q->rear+1)%MAXQSIZE;

}
QElemType DeQueue (SqQueue *Q){
 QElemType e;
 if(Q->front==Q->rear) printf("队列为空");
e=Q->base[Q->front];
 Q->front=(Q->front+1)%MAXQSIZE;
 return e;
}
QElemType GetHead(SqQueue *Q){
 QElemType e;
 if(Q->front==Q->rear) return 0;
 else
 e=Q->base[Q->front];
 return e;}
int QueueEmpty(SqQueue *Q){
 return (Q->front==Q->rear);}
void TraverSq(SqQueue Q){

 do{
 printf("%d\t",DeQueue(&Q));
 }while(!QueueEmpty(&Q));
 }
void YangHui(int n){


 SqQueue *q;
 int j,s,t;
 q=InitQueue();
 EnQueue(q,0);
 EnQueue(q,1);
 for(j=1;j<=n;j++)
 {
 EnQueue(q,0);
 do{
 s=DeQueue(q);
 t=GetHead(q);
 if(t)
 printf("%d\t",t);
 else
 printf("\n");
 EnQueue(q,s+t);
 }while(t!=0);
 }
 DeQueue(q);
 TraverSq(*q);

 }

void main(){

 YangHui(5);

}
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: include return 
2014-12-01 21:57
lqh134170985
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-12-1
收藏
得分:0 
没人回复下么
2014-12-01 22:02
yahwei
Rank: 7Rank: 7Rank: 7
来 自:湖~
等 级:黑侠
威 望:3
帖 子:145
专家分:644
注 册:2011-11-10
收藏
得分:0 
以下是引用lqh134170985在2014-12-1 21:57:03的发言:

#include "stdio.h"
#include "malloc.h"
#define QueueSize 20
/*#define ERROR 0
#define OK 1*/
#define MAXQSIZE 100
typedef int QElemType;
typedef struct
{
 QElemType *base;
 int front;
 int rear;
}SqQueue;

SqQueue * InitQueue ()
{
 SqQueue *Q;
 Q=(SqQueue*)malloc(MAXQSIZE*sizeof(SqQueue));

 Q->front=Q->rear=0;
 return Q;
}
void EnQueue(SqQueue *Q,QElemType e){

 if((Q->rear+1)%MAXQSIZE==Q->front) printf("溢出");;
Q->base[Q->rear]=e;
 Q->rear=(Q->rear+1)%MAXQSIZE;

}
QElemType DeQueue (SqQueue *Q){
 QElemType e;
 if(Q->front==Q->rear) printf("队列为空");
e=Q->base[Q->front];
 Q->front=(Q->front+1)%MAXQSIZE;
 return e;
}
QElemType GetHead(SqQueue *Q){
 QElemType e;
 if(Q->front==Q->rear) return 0;
 else
e=Q->base[Q->front];
 return e;}
int QueueEmpty(SqQueue *Q){
 return (Q->front==Q->rear);}
void TraverSq(SqQueue Q){

 do{
 printf("%d\t",DeQueue(&Q));
 }while(!QueueEmpty(&Q));
 }
void YangHui(int n){


 SqQueue *q;
 int j,s,t;
 q=InitQueue();
 EnQueue(q,0);
 EnQueue(q,1);
 for(j=1;j<=n;j++)
 {
 EnQueue(q,0);
 do{
 s=DeQueue(q);
 t=GetHead(q);
 if(t)
 printf("%d\t",t);
 else
 printf("\n");
 EnQueue(q,s+t);
 }while(t!=0);
 }
 DeQueue(q);
 TraverSq(*q);

 }

void main(){

 YangHui(5);

}
没仔细看,红色的三句用到了下标,可是好像没看到你定义数组空间呀?

[qq]949654600[/qq]
2014-12-02 00:17
zjkedy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:46
专家分:131
注 册:2010-5-14
收藏
得分:0 
#include "stdio.h"
#include "malloc.h"
#define QueueSize 20
/*#define ERROR 0
#define OK 1*/
#define MAXQSIZE 100
typedef int QElemType;
typedef struct
{
QElemType *base;
int front;
int rear;
}SqQueue;

SqQueue * InitQueue ()
{
SqQueue *Q;
Q=(SqQueue*)malloc(MAXQSIZE*sizeof(SqQueue));

Q->front=Q->rear=0;/*不符合规范, 指针Base内存也没申请啊, 还有你的队列是用来取字节数的吗?只看到首尾指针,队列消息的读写是固定读写还是根据内容调整的*/
return Q;
}
void EnQueue(SqQueue *Q,QElemType e){

if((Q->rear+1)%MAXQSIZE==Q->front) printf("溢出");;
Q->base[Q->rear]=e;
Q->rear=(Q->rear+1)%MAXQSIZE;

}
QElemType DeQueue (SqQueue *Q){
QElemType e;
if(Q->front==Q->rear) printf("队列为空");
e=Q->base[Q->front];
Q->front=(Q->front+1)%MAXQSIZE;
return e;
}
QElemType GetHead(SqQueue *Q){
QElemType e;
if(Q->front==Q->rear) return 0;
else
e=Q->base[Q->front];
return e;}
int QueueEmpty(SqQueue *Q){
return (Q->front==Q->rear);}
void TraverSq(SqQueue Q){

do{
printf("%d\t",DeQueue(&Q));
}while(!QueueEmpty(&Q));
}
void YangHui(int n){


SqQueue *q;
int j,s,t;
q=InitQueue();
EnQueue(q,0);
EnQueue(q,1);
for(j=1;j<=n;j++)
{
EnQueue(q,0);
do{
s=DeQueue(q);
t=GetHead(q);
if(t)
printf("%d\t",t);
else
printf("\n");
EnQueue(q,s+t);
}while(t!=0);
}
DeQueue(q);
TraverSq(*q);

}

void main(){

YangHui(5);

}
2014-12-02 14:07
快速回复:请问哪里出错了呢??循环队列
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027719 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved