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;}希望帮忙看一下这是哪里错误了,谢谢。
展开
2个回答
展开全部
你的逻辑我没有细看,这是我找出的语法上的错误,修改的地方用注释标出来了
#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;
}
展开全部
只想告诉你一些学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;
}
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;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询