数据结构-队列

标签: 队列的基础知识 队列的链式表示 队列的顺序表示
3人阅读 评论(0) 收藏 举报
分类:

队列(FIFO

一种特殊的线性表,限定在队头删除在队尾插入。

-


ADT Queue{

数据对象:D={ai|aiELemSet,i=1,2,…n,n>=0}

数据关系:R={<ai-1,ai>|ai-1,aiD,i=2,…n}

基本操作:

InitQueue(&Q);     //构造一个空队列

DestroyQueue(&Q);  //销毁队列

ClearQueue(&Q);   //将队列清空

QueueEmpty(Q);   //判断队列是否为空队列

QueueLength(Q);    //返回队列的长度

GetHead(Q,&e);   //返回队头元素

EnQueue(&Q,e);   //在队尾插入新元素

DeQueue(&Q,&e);   //删除队首元素

}//ADT Queue

-实现

-队列的链式表示

typedef struct QNode{

QElemType data;

struct QNode *next;

}QNode,*QueuePtr;

typedef struct{

QueuePtr front;

QueuePtr rear;

}LinkQueue;


-初始化队列

status InitQueue(LinkQueue &Q){

Q.front=Q.rear=new QNode;

if(!Q.front) return ERROR;

Q.front->next=null;

return Ok;

}//InitQueue


-入队

status EnQueue(LinkQueue &Q,QElemType e){

p=new QNode;

if(!p) return ERROR;

if(Q.front==Q.rear) Q.front->next=p;

p->data=e;p->next=null;

Q.rear->next=P;

Q.rear=p;

return Ok;

}//EnQueue


-出队

status DeQueue(LinkQueue &Q,QElemType &e){

if(Q.front==Q.rear) return ERROR;

p=Q.front->next;

e=p->data;

Q.front->next=p->next;

if(Q.rear==p) Q.rear=Q.front;

free(p);

return Ok;

}//DeQueue


-队列的顺序表示

-假溢出:当元素被插入到数组中下标最大的位置上之后,尽管此时数组的低端还有空闲空间,但不能再有入队操作了,这种现象叫做假溢出。

-循环队列:将存储队列的数组头尾相接。用求mod的方式确定位置。

-队空:front=rear;   队满(修改版):浪费一个元素空间(rear+1%MaxSize==front;使用计数器;设置一个bool变量。

       -循环队列中的元素个数的计算:当rear>=front,rear-front;当rear<front,rear-front+队列容量;

                                                   或使用公式   L=(容量+rear-front)%容量

约定rear指向队尾元素的后一位置,front指向队头元素。

const MAXQUEUE=100;

typedef struct{

QELemType Data[MAXQUEUE];

int front,rear;

}Queue;

      

查看评论

【数据结构】队列的典型应用

在日常生活和计算中,队列的应用也特别的广泛。 比如分解质因数问题
  • yexiao123098
  • yexiao123098
  • 2014-11-06 23:55:41
  • 1968

数据结构之队列(C实现)

一、队列是什么     队列是一种可以实现“先进先出”的存储结构。其实,说简单点,队列就是排队,跟我们日常生活中到银行取钱排队,排队打饭在道理上是一样的。     队列通常可以分为两种类型...
  • l494926429
  • l494926429
  • 2016-08-14 15:34:29
  • 3896

数据结构之队列(C语言实现)

数据结构之队列(C语言实现) 在这里将介绍三种队列:数组实现的循环队列、链表队列和具有实用价值的优先级队列。本次只介绍前两种,优先级队列在下一次博客中再单独说明。...
  • kang___xi
  • kang___xi
  • 2016-12-01 19:24:23
  • 702

数据结构图文解析之:队列详解与C++模板实现

原创文章,转载请注明出处:http://www.cnblogs.com/QG-whz/p/5171123.html#_label3_0 阅读目录 0. 数据结构图文解析系列1. 队列简介1...
  • ayang1986
  • ayang1986
  • 2016-12-15 22:52:30
  • 417

数据结构-队列(queue)

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

数据结构——队列的使用

队列(Quene)是一种数据结构,与栈不同的是先进先出(FIFO),最先进去的数据最先出来。主要讲解循环队列与缓冲环的使用。...
  • cai2016
  • cai2016
  • 2016-08-30 23:33:30
  • 1343

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

队列是一种线性集合,其元素从一端加入,从另一端删除。因此队列是按照先进先出方式处理的,从队列中删除元素的次序与往队列里放置元素的的次序是一样的。 由于队列是一种线性集合,因此可以像处理栈一样,把队列实...
  • zhangyifei521
  • zhangyifei521
  • 2015-11-16 19:19:07
  • 396

C++数据结构 之 队列_Queue

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

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

最近学了C++,看了下数据结构的东西,这里就跟大家分享一下自己用C++实现队列的一些思想和经验,适合初学者交流学习。 队列分类 队列在数据结构中分为普通队列和环形队列。首先说说普通队列,就是一种类似...
  • CV_YOU
  • CV_YOU
  • 2016-09-19 21:07:47
  • 1367

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

队列的基本操作.cpp #include using namespace std; typedef int QElemType; typedef int Status; typedef struc...
  • qq_32353771
  • qq_32353771
  • 2015-11-10 15:05:32
  • 1910
    个人资料
    等级:
    访问量: 5万+
    积分: 1486
    排名: 3万+