数据结构——队列篇
来源:互联网 发布:软件测试行业好吗 编辑:程序博客网 时间:2024/05/29 13:41
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
什么是队列?
是一种先入先出的模型。FIFO:first in first out
队列形式:普通队列、环形队列
普通队列
已买票形式进项说明;
一种情况第一个位置买完离开、后面的人依次往前。 效率低
第二种售票人往后依次买票。 内存浪费
环形队列:
屏蔽了普通队列的缺点,但很难理解
可以顺时针、逆时针排队,使用环形队列可以充分利用内存空间的、因为使用完一个队列头,接下来的的队列尾就可以继续使用。
队列的用途:排号机,
实际应用,左边是c++,右边是c
MyQueue.h
#ifndef MyQueue_H#define MyQueue_H#include "Customer.h"class MyQueue{public:MyQueue (int quequeCapacity);virtual ~MyQueue ();void ClearQueue ();bool QueueEmpty ()const;bool QueueFull ()const;int QueueLength () const;bool EnQueue (Customer element);bool DeQueue (Customer &element);void QueueTraverse ();private:int *m_pQueue; //可以是自己定的类别 ,比如Customer *m_pQueue;int m_iQueuelen;int m_QueueCapacity;int m_iHead;int m_iTail;};#endif;
MyQueue.cpp
#include <iostream>using namespace std;#include "MyQueue.h"MyQueue::MyQueue (int quequeCapacity){m_QueueCapacity = quequeCapacity;m_iHead = 0;m_iTail = 0;m_iQueuelen = 0;m_pQueue = new int[m_QueueCapacity]; //m_pQueue = new Customer[m_QueueCapacity];ClearQueue ();}MyQueue::~MyQueue (){delete[]m_pQueue;m_pQueue = NULL;}void MyQueue::ClearQueue (){m_iHead = 0;m_iTail = 0;m_iQueuelen = 0;}bool MyQueue::QueueEmpty ()const{if ( m_iQueuelen == 0 ){return true;}else{return false;}}int MyQueue::QueueLength () const{return m_iQueuelen;}bool MyQueue::QueueFull ()const{if ( m_iQueuelen == m_QueueCapacity ){return true;}return false;}bool MyQueue::EnQueue (int element) //bool MyQueue::EnQueue (Customer element){if ( QueueFull () ){return false;}else{m_pQueue[m_iTail] = element;m_iTail++;m_iTail = m_iTail% m_QueueCapacity;m_iQueuelen++;return true;}}bool MyQueue::DeQueue (int &element) //bool MyQueue::DeQueue (Customer &element){if ( QueueEmpty () ){return false;}element = m_pQueue[m_iHead];m_iHead++;m_iHead = m_iHead% m_QueueCapacity;m_iQueuelen--;return true;}void MyQueue::QueueTraverse (){for ( int i = m_iHead; i < m_iQueuelen + m_iHead; i++ ){cout<<m_pQueue[i% m_QueueCapacity].<<endl;}}
demo.cpp
#include <iostream>using namespace std;#include "MyQueue.h"#include "Customer.h"int main (void){MyQueue*p = new MyQueue (4);p->EnQueue (10);p->EnQueue (12);p->EnQueue (14);p->EnQueue (16);p->EnQueue (10); //这个不会成功一共四个p->QueueTraverse ();int e = 0;p->DeQueue (e);cout << endl;cout << e << endl;p->DeQueue (e);cout << endl;cout << e << endl;cout << endl;p->QueueTraverse ();p->ClearQueue ();//p->QueueTraverse ();delete p;p = NULL;system ("pause");
0 0
- 数据结构——队列篇
- 数据结构——队列
- 数据结构——队列
- 数据结构——队列
- 数据结构——队列
- 数据结构——队列
- 数据结构——队列
- 数据结构——队列
- 数据结构——队列
- 数据结构——队列
- 队列——数据结构
- 数据结构——队列
- 数据结构——队列
- 数据结构——队列
- 队列——数据结构
- 数据结构——队列
- 数据结构——队列
- 数据结构——队列
- 深入理解Java Servlet与Web容器之间的关系
- 自定义JSP中的Taglib标签中的Function函数
- c++ list, vector, map, set 区别与用法比较
- 锁相环PLL(一)Xilinx PLL IP核使用方法
- [编程题] LeetCode上的backTracking类型的题目-难度Medium
- 数据结构——队列篇
- Android中事件传递机制的总结
- 字符驱动之:控制
- 关于禁用IQKeyboardManager
- JPA @MappedSuperclass注解的使用说明
- android开发笔记 -摄像头开发
- 安卓APP中WebView页面中定义字体
- Linux Centos下安装与设置Vim编辑器和基本配置
- 页面JS复制功能