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

📄 bo3-7.cpp

📁 高一凡的数据结构源码
💻 CPP
字号:
 // bo3-7.cpp 顺序非循环队列(存储结构由c3-5.h定义)的基本操作(9个)
 void InitQueue(SqQueue1 &Q)
 { // 构造一个空队列Q
   if(!(Q.base=(QElemType*)malloc(QUEUE_INIT_SIZE*sizeof(QElemType))))
     exit(ERROR); // 存储分配失败
   Q.rear=0; // 空队列,尾指针为0
   Q.queuesize=QUEUE_INIT_SIZE; // 初始存储容量
 }

 void DestroyQueue(SqQueue1 &Q)
 { // 销毁队列Q,Q不再存在
   free(Q.base); // 释放存储空间
   Q.base=NULL;
   Q.rear=Q.queuesize=0;
 }

 void ClearQueue(SqQueue1 &Q)
 { // 将Q清为空队列
   Q.rear=0;
 }

 Status QueueEmpty(SqQueue1 Q)
 { // 若队列Q为空队列,则返回TRUE;否则返回FALSE
   if(Q.rear==0)
     return TRUE;
   else
     return FALSE;
 }

 int QueueLength(SqQueue1 Q)
 { // 返回Q的元素个数,即队列的长度
   return Q.rear;
 }

 Status GetHead(SqQueue1 Q,QElemType &e)
 { // 若队列不空,则用e返回Q的队头元素,并返回OK;否则返回ERROR
   if(Q.rear)
   {
     e=*Q.base;
     return OK;
   }
   else
     return ERROR;
 }

 void EnQueue(SqQueue1 &Q,QElemType e)
 { // 插入元素e为Q的新的队尾元素
   if(Q.rear==Q.queuesize) // 当前存储空间已满
   { // 增加分配
     Q.base=(QElemType*)realloc(Q.base,(Q.queuesize+QUEUE_INCREMENT)*sizeof(QElemType));
     if(!Q.base) // 分配失败
       exit(ERROR);
     Q.queuesize+=QUEUE_INCREMENT; // 增加存储容量
   }
   Q.base[Q.rear++]=e; // 入队新元素,队尾指针+1
 }

 Status DeQueue(SqQueue1 &Q,QElemType &e)
 { // 若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;否则返回ERROR
   int i;
   if(Q.rear) // 队列不空
   {
     e=*Q.base;
     for(i=1;i<Q.rear;i++)
       Q.base[i-1]=Q.base[i]; // 依次前移队列元素
     Q.rear--; // 尾指针前移
     return OK;
   }
   else
     return ERROR;
 }

 void QueueTraverse(SqQueue1 Q,void(*vi)(QElemType))
 { // 从队头到队尾依次对队列Q中每个元素调用函数vi()
   int i;
   for(i=0;i<Q.rear;i++)
     vi(Q.base[i]);
   printf("\n");
 }

⌨️ 快捷键说明

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