您的位置:首页 > 编程语言 > C语言/C++

关于 队列(C语言) ——(参考算法导论)

2010-07-14 15:43 295 查看
栈和队列好像都是在一起的,呵呵。



队列是先进先出,算法导论这个解释还把这个数组弄成环了,真纠结,只写了代码,不知道用处,先放着。呵呵



而且,自己写的判断函数觉得有点问题,那个如果出错的话,怎么退出捏。。应该在主函数里面加个判断才是。懒得弄了。我觉得要是知道长度就不会溢出了。额。。





#include <stdio.h>
#include <stdlib.h>
int head,tail,N;   //N是个数 
int Q[800];
int CheckEn()  //判断队列是否为空 
{
  if(head == tail)
    return 1;
  return 0;
}

int CheckDe()  //判断队列是否已满 
{
  if(head - tail == 1)
    return 1;
  return 0;
}

void EnQueue( int x)  // 入队 
{
  if( CheckDe() )
    printf("Error!/n");
  else
  {
    Q[tail] = x;
    if( tail == N)
      tail = 0;
    else
      tail++;
  }
}

int DeQueue()   //出队 
{
  int x;
  if( CheckEn() )
    printf("Error!/n");
  else
  {
    x = Q[head];
    if( head == N)
      head = 0;
    else
      head++;
    return x;
  }
}
 
int main(void)
{
  int x,temp;
  printf("输入数字个数N:");
  scanf("%d",&N); 
  printf("输入N个数,以0结束:/n");
  while(scanf("%d",&x)!=EOF && x)
  {
    EnQueue(x); 
  }
  temp = N;
  while( temp-- )
    printf("%d ",DeQueue());
    
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: