c++ 队列算法
include
using namespace std;
#define Maxsize 5
typedef int DataType;
typedef struct Queue {
DataType data[Maxsize];
int front; //循环 队列头指针
int rear; //循环 队列尾指针
}QueueList;
void intit(QueueList *list) {
list->front=list->rear = 0;
}
// 队列是否已满
bool IsFull(QueueList *list) {
if (!list) return false;
if ((list->rear + 1) % Maxsize == list->front) {
return false;
}
return true;
}
// 队列是否为空
bool isEmpty(QueueList *list) {
if (list->rear == list->front) {
return true;
}
return false;
}
void showData(QueueList *list) {
int i = list->front;
while (i != list->rear)
{
cout << list->data[i] << "\t";
i = (i + 1) % Maxsize;
}
}
void EnterQueue(QueueList *list, DataType datas) {
if (!list) return;
if (!IsFull(list)) {
cout << "队列已满:" << datas << "不能插入此队列" << endl;
return;
}
list->data[list->rear] = datas; // 在队尾插入元素值
list->rear = (list->rear + 1) % Maxsize; // 队尾指针后移一位
}
bool DeleteQueue(QueueList *list, DataType *datas) {
if (!list || isEmpty(list)) {
cout << "此队列为空" << endl;
return false;
}
*datas = list->data[list->front];
list->front = (list->front + 1) % Maxsize;
return true;
}
void ClearQueues(QueueList *list) {
if (!list) return;
list->front = list->rear = 0;
}
// 获取队列元素 个数
int getLengths(QueueList *list) {
return (list->rear - list->front + Maxsize) % Maxsize;
}
int main() {
QueueList *list = new QueueList;
intit(list);
for (int i = 0; i < 7; i++)
{
EnterQueue(list, i);
}
cout << "---------------------入队的值-----------------:" << endl;
showData(list);
cout << "队列元素个数:" << getLengths(list) << endl;
int k = 0;
int *p = &k;
cout << "------------------------删除队列元素-----------------------" << endl;
for (int i = 0; i < 3;i++) {
DeleteQueue(list, p);
cout << "出列的值:" << endl;
cout<< *p <<'\t';
}
cout << "队列剩余的值" << endl;
showData(list);
cout << "队列元素个数:" << getLengths(list) << endl;
cout << "--------------删除后再添加元素--------------" << endl;
for (int i = 0; i < 3;i++) {
EnterQueue(list, i);
}
cout << "入队的值:" << endl;
showData(list);
cout << "队列元素个数:" << getLengths(list) << endl;
}
c++ 队列算法的更多相关文章
- 双有序队列算法——处理哈夫曼K叉树的高效算法
算法介绍: 哈夫曼树的思路及实现众所周知,大部分是用堆来维护和实现,这种思路比较清晰,在K比较小的时候处理较快(具体例子接下来再说),而且编程复杂度不是很高,利于应用.但是,其所用的数据结构是树,是在 ...
- 『Python CoolBook:heapq』数据结构和算法_heapq堆队列算法&容器排序
一.heapq堆队列算法模块 本模块实现了堆队列算法,也叫作优先级队列算法.堆队列是一棵二叉树,并且拥有这样特点,它的父节点的值小于等于任何它的子节点的值. 本模块实际上实现了一系列操作容器的方法,使 ...
- php队列算法[转]
<?php/*** php队列算法* * Create On 2010-6-4* Author Been* QQ:281443751* Email:binbin1129@126.com**/cl ...
- 5.4 heapq--堆队列算法
本模块实现了堆队列算法,也叫作优先级队列算法.堆队列是一棵二叉树.而且拥有这样特点,它的父节点的值小于等于不论什么它的子节点的值,假设採用数组array实现,能够把它们的关系表示为:heap[k] & ...
- 约瑟夫环-循环队列算法(曾微软,google笔试题)
这也是我们聚会时常常做的游戏之一. 算法思路: 此处我使用循环链表模拟人围城一圈,每一个结点代表一个人.链表是一个有序链表,链表结点数据域是一个整型,代表人的序号.出局等同于链表删除元素,每次出局后重 ...
- FIFO队列算法的C程序实现
头文件:Queue.h #ifndef _Queue_H #define _Queue_H typedef struct QueueDef_ //队列对象定义 { u16 front; //队列头部 ...
- ACM山东工商 栈和队列算法练习
#include <stdio.h>#include <stdlib.h> #define SIZE 20 typedef struct hold{ char sign[S ...
- Michael-Scott非阻塞队列(lock-free)算法的C实现
Michael-Scott非阻塞队列算法,即MS-queue算法,是1 9 9 6 年由Maged . M .Michael and M. L. Scott提出的,是最为经典的并发FIFO队列上的算法 ...
- PHP队列的实现 算法
<?php /** * php队列算法 * * Create On 2010-6-4 * Author Been * QQ:281443751 * Email:binbin1129@126.co ...
随机推荐
- phpcms多站点表单统一到主站点管理的解决方案
1.在主站点新建子站点的表单向导,与子站点的设置保持一致 2.在各个子站点的数据库的表单数据表添加一个写入触发器,将新增的表单数据同步到主站点的数据库对应表里,这样主站点就能展示所有站点的表单数据 3 ...
- spider csdn博客和quantstart文章
spider csdn博客和quantstart文章 功能 提取csdn博客文章 提取quantstart.com 博客文章, Micheal Hall-Moore 创办的网站 特色功能就是: 想把原 ...
- 判断php的运行模式
我们一般情况下,都是在apache下面运行我们的php程序,当然也有些人是用IIS环境的 我们要是想知道我们目前运行的环境是什么的话,那我们可以用函数php_sapi_name()来测试 代码: &l ...
- centos安装php7.18注意
报错–php53-common conflicts with php-common //解决 yum -y install php* --skip-broken 第一步:安装源 yum install ...
- 高可用Kubernetes集群原理介绍
■ 文/ 天云软件 云平台开发工程师 张伟 1. 背景 Kubernetes作为容器应用的管理中心,对集群内部所有容器的生命周期进行管理,结合自身的健康检查及错误恢复机制,实现了集群内部应用层的高可用 ...
- YUI css reset
*{ margin:0; padding:0; } 以前写CSS都会在会在样式的开头部分添加上述的内容,今天才发现这种写法很不友好,会导致很多样式显示问题,所以并不适合所有的浏览器. 下面的是雅虎的c ...
- LeetCode69 Sqrt(x)
题意: Implement int sqrt(int x). Compute and return the square root of x.(Medium) 分析: 二分搜索套路题,不能开方开尽的时 ...
- Bootstrap之Form表单验证神器: BootstrapValidator(转)
前言:做Web开发的我们,表单验证是再常见不过的需求了.友好的错误提示能增加用户体验.博主搜索bootstrap表单验证,搜到的结果大部分都是文中的主题:bootstrapvalidator.今天就来 ...
- H3C 数据链路层
- elasticsearch-倒排索引原理
倒排索引 Elasticsearch 使用一种称为 倒排索引 的结构,它适用于快速的全文搜索.一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表. 例如,假设我们有两个 ...