首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 循环队列的程序
【标  题】:循环队列的程序
【关键字】:
【来  源】:http://blog.csdn.net/ningboweimin/archive/2006/11/08/1372928.aspx

循环队列的程序

#include <stdio.h>
#define MAX 10
#define TRUE 1


typedef struct
{
  int data[MAX];
  int front, rear;
  int isNull;
}Sequeue;

void Init(Sequeue *sq)
{
  sq->front=0;
  sq->rear=0;
  sq->isNull=1;
}

int Ins(Sequeue *sq,int x)
{
   if((sq->front+1)%MAX ==(sq->rear+1)%MAX && sq->isNull!=1)
   {
     printf("\nFull squeue!New data in the old position!\n");

     sq->rear=(sq->rear+1)%MAX;
     sq->data[sq->rear]=x;
     sq->front=(sq->front+1)%MAX;
   }
   else
   {
     sq->rear=(sq->rear+1)%MAX;
     sq->data[sq->rear]=x;
     printf("\nData in\n");
  sq->isNull=0;
     return(TRUE);
   }

   sq->isNull=0;
   return x;
}

 


int Del(Sequeue *sq,int x)
{
   if(sq->rear==sq->front && sq->isNull==1)
   {
    printf("the queue is empty\n");
    return NULL;
   }
   else
   {
    if((sq->rear)%MAX==(sq->front+1)%MAX)
  sq->isNull=1;
 sq->front=(sq->front+1)%MAX;
    x= sq->data[sq->front];
    printf("\nData out\n");
    return(x);
   }
}

 

int Print(Sequeue *sq)
{
   int k;


   if(sq->rear==sq->front && sq->isNull==1)
   {
    printf("the queue is empty\n");
    return NULL;
   }
   else
   printf("The sequeue is:\n");


    k=sq->front;
    do
    {
     k++;
     k=k%MAX;
     printf("-%d-",sq->data[k]);
    }while(k!=sq->rear);
  return 1;
}

 

main()
{


  Sequeue *head=(Sequeue*)malloc(sizeof(Sequeue));
  int c,x;

  clrscr();
  Init(head);
  
  do
  {
   printf("\n**********\nPlease select a number to input:\n1 insert a number\n2 delete a number\n3 print the squeue\n4 quit the program\n**********\n");
   c=getch();
   switch(c)
   {    case'1':
              printf("\nPlease Enter a number\n");
              scanf("%d",&x);
              Ins(head,x);
              break;


       case '2':
              Del(head,x);
              break;
       case'3':
              Print(head);
              break;
   }
  }while(c!='4');
  free(head);
 
}

 
"S、P先生数学谜题"算法分析及源代码:【上一篇】
C++点滴积累-函数指针并实现回调:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • WebBulider 中的RSSWebpar — 建立自己的 RSS 阅读器
  • 关于注册Flag在破解中的应用(2)
  • 网页设计中HTML常范的五个错误
  • Accessing DDK Help from Visual Studio
  • 中国宠物经济蛋糕静候分割
  • Regex學習日記,基礎篇
  • 利用API创建文件目录
  • 给Repeater填充数据
  • MySQL Join详解
  • 好消息:linux软raid搞定,双硬盘其中的每个硬盘都能启动 mdadm万岁,raid1万岁
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.