⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 队列.txt

📁 数据结构课堂实验 集中了数据结构,线性表,连表,栈,队列,二叉树,图,排序算法,查找算法的实现
💻 TXT
字号:
  #include "stdio.h"
#include "alloc.h"
#define  OK  1
#define  ERROR  0
#define  OVERFLOW  -2
#define  TRUE  1
#define  FALSE  0
typedef  int  Status;
#define MAX 10

typedef int ElemType;
typedef struct
{ElemType *Elem;
 int front;
 int rear;
 }CirQueue;

Status InitQueue(CirQueue &Q)
{Q.Elem=(ElemType *)malloc(MAX*sizeof(ElemType));
 if(!Q.Elem) return(OVERFLOW);
Q.front=Q.rear=0;
return OK;
}

Status EnQueue(CirQueue &Q,ElemType e)
{ if((Q.rear+1)%MAX==Q.front)
    return ERROR;
  Q.Elem[Q.rear]=e;
  Q.rear=(Q.rear+1)%MAX;
  return OK;
}

Status DeQueue(CirQueue &Q,ElemType &e)
{ if(Q.rear==Q.front) return ERROR;
  e=Q.Elem[Q.front];
  Q.front=(Q.front+1)%MAX;
  return OK;
  }

void QueueOutput(CirQueue Q)           
{int i;
 for(i=Q.front;i!=Q.rear;i=(i+1)%MAX)
   printf("%5d",Q.Elem[i]);
 printf("\n");
 }

Status GetHead(CirQueue Q,ElemType &e)	/*取列头*/
{if (Q.front==0 && Q.rear==0) return ERROR;
 e=Q.Elem[Q.front];
 return OK;}

Status QueueLength(CirQueue Q)    /*队列求长*/
{return (Q.rear-Q.front +MAX)%MAX;}

Status ClearQueue(CirQueue &Q)    /*清空队列*/
{Q.front=Q.rear=0;
return OK;}

main()
{CirQueue Q;
 ElemType e;
 int i;
 InitQueue(Q);
 for(i=1;i<=5;i++) EnQueue(Q,i);
 GetHead(Q,e);
 printf("\nThe Head Element:%d\n",e);
 printf("Length:%d\n",QueueLength(Q));
 QueueOutput(Q);
 DeQueue(Q, e);  QueueOutput(Q);
 for(i=1;i<=3;i++)  DeQueue(Q, e);
 QueueOutput(Q);
 for(i=6;i<=13;i++) EnQueue(Q,i);
 QueueOutput(Q);
 ClearQueue(Q);
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -