C语言编写循环队列出现编译错误?

#include<stdio.h>#include<stdlib.h>#definemaxsize100typedefsturct{intdata[maxsize];in... #include <stdio.h>#include <stdlib.h>#define maxsize 100typedef sturct{ int data[maxsize]; int front,rear;}SqQueue;void initQueue(SqQueue *qu){ qu->front=0; qu->reat=0;}int enQueue (SqQueue *qu,int x){ if ((qu->rear+1)%maxsize==qu->front) return 0; qu->rear=(qu->rear+1)%maxsize; qu->data[qu->rear]=x; return 1;}int deQueue(SqQueue *qu,int x){ if(qu->front==qu->rear) return 0; qu->front=(qu->front+1)%maxsize; x=qu->data[qu->front]; return 1;}int main(){ SqQueue qu; int a,n,e,b; printf("请输入入队元素个数\n"); scanf ("%d",&n); printf ("\n请输入入队元素\n"); while (n--) { scanf ("%d",&a); enQueue (&qu,a); } for(a=0;a<n-1;a++) printf ("%d",qu->data[a]); printf ("\n请输入入队元素e"); scanf ("%d",&e); enQueue (&qu,e); for(a=0;a<n;a++) printf ("%d",qu->data[a]); printf ("\n"); b=qu->data[qu->front]; deQueue(&qu,b); for(a=0;a<n-1;a++) printf ("%d",qu->data[a]); printf ("\n"); return 0;}希望帮忙看一下这是哪里错误了,谢谢。 展开
 我来答
百度网友e3a527e
2018-11-04 · TA获得超过152个赞
知道小有建树答主
回答量:219
采纳率:56%
帮助的人:98.6万
展开全部

你的逻辑我没有细看,这是我找出的语法上的错误,修改的地方用注释标出来了

#include <stdio.h>
#include <stdlib.h>
#define maxsize 100
/////你的struct写错了
typedef struct

 int data[maxsize]; 
 int front,rear;
}SqQueue;
void initQueue(SqQueue *qu)

 qu->front=0; 
////你的↓写错了
 qu->rear=0;
}
int enQueue(SqQueue *qu,int x)

 if ((qu->rear+1)%maxsize==qu->front) return 0; 
 qu->rear=(qu->rear+1)%maxsize; 
 qu->data[qu->rear]=x; 
 return 1;
}
int deQueue(SqQueue *qu,int x)
{
 if(qu->front==qu->rear) return 0; 
 qu->front=(qu->front+1)%maxsize; 
 x=qu->data[qu->front]; 
 return 1;
}
int main(){
 SqQueue qu;
 int a,n,e,b; 
 printf("请输入入队元素个数\n"); 
 scanf("%d",&n); 
 printf("\n请输入入队元素个数\n"); 
 while(n--)
 { 
  scanf("%d",&a); 
  enQueue(&qu,a); 
 }
                               //箭头改成点
 for(a=0;a<n-1;a++) printf( "%d",qu.data[a]); 
 printf("\n请输入入队元素e"); 
 scanf("%d",&e); 
 enQueue(&qu,e);
                           //箭头改成点
 for(a=0;a<n;a++) printf("%d",qu.data[a]); 
 printf ("\n"); 
         //箭头改成点
 b=qu.data[qu.front]; 
 deQueue(&qu,b);
                             //箭头改成点
 for(a=0;a<n-1;a++) printf("%d",qu.data[a]); 
 printf("\n"); 
 return 0;
}
bj_jp996e49a
2018-11-04 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1.2万
采纳率:78%
帮助的人:2549万
展开全部
只想告诉你一些学c语言的方法和小调试技巧:
1、编程一定要从简单的开始,多看简单例程,记住编程思路。。只有简单的基础好了,复杂的就没有那么难了。
2、对于输入数据等看不见的地方,要用打印函数,把看不见的打印出来,这样才可看出哪里有问题。
下面把程序中的一些错误改了一点,通过编译,剩下其他错误和不对的,根据例句自己琢磨改正。。学习就是在出错误和改错中,才能真正学好。。加油。
#include <stdio.h>
#include <stdlib.h>
#define maxsize 100

typedef struct //源程序粗心把结构图字母写错了
{
int data[maxsize];
int front;
int rear;
}SqQueue;

void initQueue(SqQueue *qu)
{
qu->front=0;
qu->rear=0; //怎么能把rear写成reat?
}
int enQueue (SqQueue *qu,int x,int y)
{
/* if ((qu->rear+1)%maxsize==qu->front) //思路混乱。。编程首先要想好思路,并且后面用文字写出来,不然自己都会忘记和乱。
return 0;
qu->rear=(qu->rear+1)%maxsize;
qu->data[qu->rear]=x;
return 1;
*/

qu->data[y]=x; //直接进入数组内就可以了
return 1;
}
int deQueue(SqQueue *qu,int x)
{
if(qu->front==qu->rear)
return 0;
qu->front=(qu->front+1)%maxsize;
x=qu->data[qu->front];
return 1;
}

int main()
{
int a,n,e,b,j;
SqQueue *qu;
SqQueue qu1; //要定义一个实际结构体,否则没有分配内存无法应用
qu=&qu1; //指针必须先定义指向才能用,这些基本知识要记住。注释掉这句试试看
printf("请输入入队元素个数\n");
scanf ("%d",&n);

printf ("入队元素个数=%d\n",n);
j=n; //用j变量不会破坏输入个数n
while (j--)
{
printf("请输入入队元素\n");
scanf ("%d",&a);
printf ("入队元素%d=%d\n",j+1,a);
enQueue (qu,a,j);
}
printf ("\n""入队元素=\n");
for(a=0;a<n;a++) //如果不用j变量,输入n--到现在是0,这部分就无法运行了
{
printf ("%d",qu->data[a]);
printf (",");
}
printf ("\n请输入入队元素e");
scanf ("%d",&e);
enQueue (qu,e,j);
for(a=0;a<n;a++)
printf ("%d",qu->data[a]); printf ("\n");
b=qu->data[qu->front];
deQueue(qu,b);
for(a=0;a<n-1;a++)
printf ("%d",qu->data[a]);
printf ("\n");
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式