首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

队列的运算,该怎么解决

2012-03-18 
队列的运算#include stdio.h#define MAXLEN 10typedefintelementtypetypedefstruct{elementtype elemen

队列的运算
#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;
这样就可以了。

热点排行