一道数据结构的练习题
#include<stdio.h>
#include<stdlib.h>
#define maxsize 10
typedef int elemtype;
typedef struct
{
elemtype data[maxsize];
int front;
int rear;
}cirqueue;
main()
{
char ch;
elemtype x;
cirqueue *q;
void initcqueue(cirqueue **q);
int encqueue(cirqueue *q,elemtype x);
int decqueue(cirqueue *q,elemtype *x);
initcqueue(&q);
printf("\ndo you want to enter data into queue(y/n)?");
ch=getchar();
while(ch=='y')
{
printf("\ninput data:");
scanf("%d",&x);
encqueue(q,x);
printf("\ndo you want to continue(y/n)?");
getchar();
ch=getchar();
}
printf("\ndo you want to continue(y/n)?");
getchar();
ch=getchar();
while(ch=='y')
{
decqueue(q,&x);
printf("\nthe data deleted from queue is:%d",x);
printf("\ndo you want to continue(y/n)?");
getchar();
ch=getchar();
}
}
void initcqueue(cirqueue **q)//这里为什么有用指向指针的指针?
{
(*q)->rear=0;
(*q)->front=0;
}
int encqueue(cirqueue *q,elemtype x)
{
if(q->front==(q->rear+1)%maxsize)
{
printf("\nerror:the queue is full !");
return 0;
}
q->data[q->rear]=x;//这两句看不懂
q->rear =(q->rear+1)%maxsize;
return 1;
}
int decqueue(cirqueue *q,elemtype *x)
{
if(q->front==q->rear)
{
printf("\nerror: the queue is empty !");
return 0;
}
*x=q->data[q->front];
q->front=(q->front+1)%maxsize;
return 1;
}
不知道为什么这个程序运行不了。