队列的数组实现

原创 2013年12月04日 23:10:03

queue.h

#ifndef QUEUE_H_INCLUDED
#define QUEUE_H_INCLUDED

typedef  int  ElementType;

struct  queuerecord;
typedef  struct  queuerecord  *Queue;
struct  queuerecord
{
    int  Capacity;
    int  Front;
    int  Rear;
    int  Size;
    ElementType  *Array;
};


Queue  CreatQueue(int maxelement);
int  IsEmpty(Queue Q);
int  IsFull(Queue  Q);
void  Dispose(Queue  Q);
void  MakeEmpty(Queue  Q);
Queue  EnQueue(ElementType X,Queue  Q);
Queue  DeQueue(Queue  Q);
ElementType  Front(Queue Q);

#endif // QUEUE_H_INCLUDED

queue.c

#include  <stdio.h>
#include  <stdlib.h>
#include  "queue.h"

Queue  CreatQueue(int maxelement)
{
    Queue Q=(Queue)malloc(sizeof(struct queuerecord));
    if(Q==NULL)
        printf("out of space");

    Q->Array=(ElementType *)malloc(sizeof(ElementType));
    if(Q->Array==NULL)
        printf("Error:out of space!!!");
    Q->Capacity =maxelement;

    MakeEmpty(Q);
    return  Q;
}


int  IsEmpty(Queue Q)
{
    return  Q->Size==0;
}


int  IsFull(Queue  Q)
{
    return  Q->Size ==Q->Capacity;
}



void  MakeEmpty(Queue  Q)
{
    Q->Front=Q->Rear=0;
    Q->Size=0;
}


Queue  EnQueue(ElementType X,Queue  Q)
{
    if(!IsFull(Q))
     {
         Q->Array[Q->Rear++] =X;
         Q->Size++;
     }
     else
     {
         printf("error: queue is full!");
     }

     return Q;
}

Queue  DeQueue(Queue  Q)
{
    if(!IsEmpty(Q))
    {
        Q->Front++;
        Q->Size--;
    }
    else
        printf("error: queue is empty!!!");

    return  Q;
}


ElementType  Front(Queue Q)
{
    if(!IsEmpty(Q))
        return  Q->Array[Q->Front];
    else
    {
        printf("Error: queue  is empty!!!");
        return 0;
    }
}










main.c

#include <stdio.h>
#include <stdlib.h>
#include  "queue.c"

int main()
{
    Queue  Q=(Queue)malloc(sizeof(struct queuerecord));
    int  c;
    Q=CreatQueue(10);

    while(!IsFull(Q))
    {
        c=getchar();
        Q=EnQueue( c ,Q);
    }

    while(!IsEmpty(Q))
    {
        printf("%d\t", Front(Q));
        Q=DeQueue(Q);
    }

    return 0;
}



用数组实现队列(C实现)

main.c #include #define MAX_SIZE 10 int queue[MAX_SIZE]; int rear = -1; int front = -1; int In...
  • zenglinshan
  • zenglinshan
  • 2015年11月23日 13:38
  • 969

队列的数组实现与链表实现

队列的说明 队列是一种基本的数据结构。我们平时排队等候服务的时候,是先到的人先接受服务。对于队列这种数据结构,实现的就是一种先进先出(first-int, first-out, FIFO)的...
  • Clown_Zeon
  • Clown_Zeon
  • 2016年06月07日 19:19
  • 2973

队列的数组实现(C语言描述)

队列也是一种简单却很有用的数据结构,其特点是先进先出,基本操作是enqueue(入列)和dequeue(出列) 下面给出数组实现的代码:#ifndef QUEUE_H_INCLUDED #defin...
  • xiaodu1997
  • xiaodu1997
  • 2016年10月25日 16:19
  • 1182

用最简单的数组去实现队列

用数组去实现队列在上一节中我们是用数组去实现了客栈的功能,那么我们在这节中学习如何用数组去实现队列的功能队列是一种先进先出的数据结构(fisrt-in-first-out) 队列之允许在后端进行插入操...
  • qq_29924041
  • qq_29924041
  • 2016年12月20日 23:15
  • 759

Java-用数组实现队列(简)

在网上阅读一位Android五年经验大神分享的面试经历,提到有个公司面试官问了用数组写队列的实现方式,随即自己构思了一下,简单的写了一下。还有疏漏,可以优化的还很多,主要就是个想法。class Arr...
  • youshi520000
  • youshi520000
  • 2016年08月03日 17:34
  • 1603

队列(Queue)-- 数组实现(C++ )

什么是队列? 队列是一种先入先出的数据结构(FIFO),只允许在前端(front)删除,在后端(rear)插入。 那么怎么实现队列呢? 数组实现 变量 前端: front 后端: rear 存储数组...
  • myloveqingmu
  • myloveqingmu
  • 2017年02月25日 17:01
  • 1065

队列(一)——队列的数组实现方式

1.队列的概念 队列是一种特殊的线性表,只允许在队列的一端进行插入而在另一端进行删除。 队列一般拥有队首(front指针)和队尾(rear指针),当一个队列并未存入数据的时候,front和rear...
  • laoniu_c
  • laoniu_c
  • 2014年08月04日 16:41
  • 2680

笔记七:基于数组的循环队列的实现

定义:队列也是一种线性表。其特点是队列的插入与删除在两端进行,是一个先进先出(FIFO)的线性表。插入元素的一端叫队尾,删除元素的一端叫队首。三种表现形式:1、 公式1: location(i)=...
  • u014033518
  • u014033518
  • 2016年05月07日 21:40
  • 783

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

本文是针对数据结构基础系列网络课程(3):栈和队列的实践项目。【项目 - 队列数组】   创建10个队列,分别编号为0-9(处理为队列数组,编号即下标)。输入若干个正整数,以数字0作为结束。设输入的...
  • sxhelijian
  • sxhelijian
  • 2015年10月06日 07:13
  • 2299

利用数组实现队列操作

利用数组实现队列操作 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 说明: 项目中有30台分机,每台分机都可能发出请求,主机...
  • jdh99
  • jdh99
  • 2012年01月11日 13:48
  • 5978
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:队列的数组实现
举报原因:
原因补充:

(最多只允许输入30个字)