关闭

数据结构——队列篇

标签: 数据结构队列篇
318人阅读 评论(0) 收藏 举报
分类:

 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。

什么是队列?

是一种先入先出的模型。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
查看评论

数据结构--队列-泛型OC&C++混编-泛型编程

在这篇文章里, 您可以学习到: 数据结构简介数据结构的逻辑结构和物理结构队列OC和C++在Xcode中的混编泛型编程思想泛型编程实现循环队列和链表队列博客中使用的图片均来自网络 一.数据结构简介 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的...
  • lc_1581835288
  • lc_1581835288
  • 2016-01-02 20:50
  • 1454

数据结构-队列(queue)

队列(queue)是一种采用先进先出(FIFO)策略的抽象数据结构,它的想法来自于生活中排队的策略。顾客在付款结账的时候,按照到来的先后顺序排队结账,先来的顾客先结账,后来的顾客后结账。队列实现同栈的实现一样,队列的实现也有数组实现和链表实现两种方式。
  • juanqinyang
  • juanqinyang
  • 2016-05-09 16:51
  • 5656

常见数据结构(一)-栈,队列,堆,哈希表

本文介绍几种常见的数据结构:栈、队列、堆、哈希表,等等。
  • h3243212
  • h3243212
  • 2016-10-14 00:35
  • 3641

C++实现数据结构-队列

最近学了C++,看了下数据结构的东西,这里就跟大家分享一下自己用C++实现队列的一些思想和经验,适合初学者交流学习。 队列分类 队列在数据结构中分为普通队列和环形队列。首先说说普通队列,就是一种类似隧道的数据结构,对于队列里的数据,是先入先出,这点和栈相反。但是普通队列有些缺点,下面来说说普通队列...
  • CV_YOU
  • CV_YOU
  • 2016-09-19 21:07
  • 1148

数据结构(队列)

建立一个队,1,3,5,7,9入队,再出队列。 链队列的方法和循环队列两种方法。 首先是链队列: #include #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INF...
  • xujinsmile
  • xujinsmile
  • 2012-03-21 00:43
  • 3559

数据结构——队列(Java实现)

编程实现对循环链队列的入队和出队操作。 ⑴根据输入的队列长度n和各元素值建立一个带头结点的循环链表表示的队列(循环链队列),并且只设一个尾指针来指向尾结点,然后输出队列中各元素值。 ⑵将数据元素e入队,并输出入队后的队列中各元素值。 ⑶将循环链队列的队首元素出队,并输出出队元素的值和出队后...
  • qq_18860653
  • qq_18860653
  • 2016-11-21 16:59
  • 689

C++数据结构 之 队列_Queue

C++数据结构 之 队列_Queue源代码只包含头文件注:需要C++11的支持。
  • liu798675179
  • liu798675179
  • 2016-08-10 11:40
  • 1391

数据结构实践——队列数组

本文是针对数据结构基础系列网络课程(3):栈和队列的实践项目。【项目 - 队列数组】   创建10个队列,分别编号为0-9(处理为队列数组,编号即下标)。输入若干个正整数,以数字0作为结束。设输入的值为x,其个位数字的大小为i,则将x插入到编号为i的队列中。最后输出所有的非空队列。   要求将队...
  • sxhelijian
  • sxhelijian
  • 2015-10-06 07:13
  • 2299

【数据结构】队列的基本操作

队列的基本操作.cpp #include using namespace std; typedef int QElemType; typedef int Status; typedef struct QNode {  QElemType data;    ...
  • qq_32353771
  • qq_32353771
  • 2015-11-10 15:05
  • 1499

c++基本数据结构的类的用法--栈,队列,链表

1.stack类 转自:http://www.169it.com/article/2839007600903800247.html c++ stl栈stack介绍 C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。...
  • xtnc1028
  • xtnc1028
  • 2015-05-28 16:41
  • 970
    个人资料
    • 访问:19864次
    • 积分:419
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:2篇
    • 译文:1篇
    • 评论:15条
    文章分类
    最新评论