码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构--队列之C数组实现

时间:2014-07-29 18:13:02      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:队列   先进先出   数据结构   fifo   

队列是一种限定操作的线性表,它只能在表的一段插入,另外一段取出.

所以也称为先进先出数据结构(FIFO---First In First Out)


C代码如下(有小bug不想调了,作为参考即可):

#include<stdio.h>
#define maxsize 5

typedef int ElemType;

typedef struct queue
{
    int head;
    int tail;
    ElemType Data[maxsize];
}Queue;

void InitQueue(Queue *Q)
{
    Q->tail=0;
    Q->head=0;
}

void EnQueue(Queue *Q)
{
    int value;
    int i;
    printf("Input Queue Value:\n");
    scanf("%d",&value);
    Q->head++;
    int len=Q->head-Q->tail;
    if(len<maxsize)
    {
        for(i=len-1;i>=0;i--)
            Q->Data[i+1]=Q->Data[i];
    }
    Q->Data[Q->tail]=value;
    printf("\n");
}

void DeQueue(Queue *Q)
{
    int len=Q->head-Q->tail-1;
    Q->head=Q->head-1;
    if(len<=maxsize)
    {
        printf("Out put Value:\n");
        printf("%d ",Q->Data[len]);
    }

    printf("\n");
}

void IsEmpty(Queue *Q)
{
    if(Q->head==0&&Q->tail==0)
        printf("Queue is empty.\n");
    else
        printf("Queue is not empet.\n ");

        printf("\n");
}

void IsFull(Queue *Q)
{
    if(Q->head-Q->tail>=maxsize)
        printf("Queue is Full.\n");
    else
        printf("Queue is not Full.\n");

        printf("\n");
}

void main()
{
    Queue Q;
    InitQueue(&Q);
    EnQueue(&Q);
    EnQueue(&Q);
    EnQueue(&Q);
    EnQueue(&Q);
    EnQueue(&Q);
    IsEmpty(&Q);
    IsFull(&Q);

    DeQueue(&Q);
    DeQueue(&Q);
    DeQueue(&Q);
    DeQueue(&Q);
    DeQueue(&Q);
    IsEmpty(&Q);
    IsFull(&Q);
}

结果图:

bubuko.com,布布扣





转载请注明作者:小刘


数据结构--队列之C数组实现,布布扣,bubuko.com

数据结构--队列之C数组实现

标签:队列   先进先出   数据结构   fifo   

原文地址:http://blog.csdn.net/u013018721/article/details/38268603

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!