队列的运算
#include "stdio.h"
#define MAXLEN 10
typedef int elementtype;
typedef struct
{
elementtype element[MAXLEN];
int front, rear;
}SeQueue;
SeQueue Initqueue_cq( )
{
SeQueue s;
s.front =s.rear=-1;
return(s);
}
int EnCqueue (SeQueue *cq,elementtype x)
{
if ( (cq->rear+1)%MAXLEN == cq->front)
return (0);
else
{
cq->rear = (cq->rear+1)%MAXLEN;
cq->element[cq->rear] = x;
return (1);
}
}
int DelCqueue (SeQueue *cq)
{
if (cq->rear == cq->front)
return (0);
else
{
cq->element[cq->front] = 0;
cq->front = (cq->front+1) %MAXLEN;
return (1);
}
}
int length (elementtype front,elementtype rear)
{
int n;
n=0;
n=((rear+MAXLEN)-front)%MAXLEN ;
return (n);
}
void main()
{
int i,x=1;
int c=-1;
SeQueue a;
a=Initqueue_cq( );
for(i=0;i<10;i++)
a.element[i]=0;
while(c!=0)
{
printf("qing shuru duilei caozuo :\n");
scanf("%d",&c);
switch(c)
{
case 1: printf("shu ru cao zuo shu ");
scanf("%d",&x);
EnCqueue (&a,x);
break;
case 2: DelCqueue (&a);
break;
default:printf("----------input error--------\n");
}
}
printf("\ndui lie zhong you yuansu %2d ge!\n",a.length(a.element));
for(i=0;i<10;i++)
printf("%4d",a.element[i]);
getch();
}
错误 noname.c 75: 未定义的符号'length'在 main 函数中
请各位帮我看下,
谢谢!
[解决办法]
printf("\ndui lie zhong you yuansu %2d ge!\n",a.length(a.element));
改成试试:
printf("\ndui lie zhong you yuansu %2d ge!\n",length(a.first, a.rear));
[解决办法]
int length (elementtype front,elementtype rear)
{
int n;
n=0;
n=((rear+MAXLEN)-front)%MAXLEN ;
return (n);
}
这个函数有问题的,你少算了一个。
例如:
rear = 5 , front = 1 .
n = ((5+ 10)-1)%10 = 4
但是实际上你有 1,2,3,4,5 5个元素。你少算了front本身也是一个元素。
n = ((rear + MAXLEN) - front) % MAXLEN + 1;
这样就可以了。