顺序队列(设计成环形队列)
来源:互联网 发布:网络考试系统软件 编辑:程序博客网 时间:2024/06/04 19:25
队列:先进先出
环形队列的时间复杂度:
(1)入队:O(1)
(2)出队:O(1)
1、头文件(queue.h)
#pragma once//顺序队列:设计成环形队列#define SIZE 10typedef struct Queue{int elem[SIZE];//数据int front;//队头指针:队列中第一个数据的下标int rear;//队尾指针:队尾数据的下一个数据下标即当前可以存放数据的下标}Queue,*PQueue;//初始化void InitQueue(PQueue pq);//入队bool Push(PQueue pq,int val);//出队bool Pop(PQueue pq,int *rtval);//判空bool IsEmpty(PQueue pq);//获得队头bool GetTop(PQueue pq,int *rtval);//摧毁void Destroy(PQueue pq);
2、源文件(queue.cpp)
#include <stdlib.h>#include <stdio.h>#include <assert.h>#include "queue.h"//初始化void InitQueue(PQueue pq){assert(pq != NULL);pq->front = 0;pq->rear = 0;}//判满:内部函数//浪费一个单元格用于区分满和空static bool IsFull(PQueue pq){return (pq->rear+1) % SIZE == pq->front;}//入队bool Push(PQueue pq,int val)//O(1){if(IsFull(pq)){return false;}pq->elem[pq->rear] = val;pq->rear = (pq->rear+1)%SIZE;return true;}//出队(获得队头并删除)bool Pop(PQueue pq,int *rtval)//O(1){assert(pq != NULL);if(IsEmpty(pq)){return false;}*rtval = pq->elem[pq->front];pq->front = (pq->front+1)%SIZE;return true;}//判空bool IsEmpty(PQueue pq){return pq->front == pq->rear;}//获得队头但不删除bool GetTop(PQueue pq,int *rtval){assert(pq != NULL);if(IsEmpty(pq)){return false;}*rtval = pq->elem[pq->front];return true;}//摧毁void Destroy(PQueue pq){pq->front = pq->rear;}
3、测试源文件(test.cpp)
#include <stdio.h>#include "queue.h"int main(){int i;Queue p;InitQueue(&p);for(i = 0; i < 10;i++){Push(&p,i);//入队}int tmp;while(!IsEmpty(&p)){Pop(&p,&tmp);//出队printf("%d\n",tmp);}return 0;}
上述程序的运行结果:
阅读全文
0 0
- 顺序队列(设计成环形队列)
- 顺序队列(环形队列)
- 顺序环形队列
- 数据结构-顺序环形队列
- 缓冲区设计--环形队列
- 缓冲区设计--环形队列
- 第七周:顺序环形队列
- 环形顺序队列的实现
- 第七周 顺序环形队列
- 环形队列
- 环形队列
- 环形队列
- 环形队列
- 环形队列
- 环形队列
- 环形队列
- 环形队列
- 环形队列
- Java之JIT编译器的总结
- 大部分人都不会注意到的JavaMail天坑
- MySQL的select语法
- ReactiveCocoa 的RACMulticastConnection使用
- 7.2 7.3 二叉树的概念和性质、存储
- 顺序队列(设计成环形队列)
- 动态代理学习笔记
- Linux ln -sf 的用法
- LeetCode 之 Container With Most Water
- poj 1050 To the Max
- 以cdn为前导,使用Nginx服务器反向代理,获取客户端真实ip的办法
- SSH框架整合(用户登录)
- Qt设置窗口不在系统的任务栏上显示
- 解决LINK : fatal error LNK1168: 无法打开 无法写入