Chinaunix首页 | 论坛 | 博客
  • 博客访问: 342659
  • 博文数量: 72
  • 博客积分: 2130
  • 博客等级: 大尉
  • 技术积分: 857
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-05 16:10
文章分类

全部博文(72)

文章存档

2010年(5)

2009年(14)

2008年(53)

分类: C/C++

2008-10-07 16:25:19

#include
#include
#include
#ifndef QUEUE_SIZE
#define QUEUE_SIZE 20
#endif

typedef struct LinkQueue
{
        int front;
        int rear;
        int count;
        int data[QUEUE_SIZE];
}LinkQueue;

void QueueInit(LinkQueue *Q)
{
        Q->front = Q->rear=0;
        Q->count = 0;
}

int QueueFull(LinkQueue *Q)
{
        return (Q->front==Q->rear)&&(Q->count==QUEUE_SIZE);
}

int QueueEmpty(LinkQueue *Q)
{
        return (Q->front==Q->rear)&&(Q->count==0);
}

void EnQueue(LinkQueue *Q, int value)
{
        if(QueueFull(Q))
                printf("queue is full, your data will be covered!\n");
        Q->data[Q->rear] = value;
        Q->rear = (Q->rear+1)%QUEUE_SIZE;
        Q->count++;
}void DeQueue(LinkQueue *Q)
{
        if(QueueEmpty(Q))
                printf("queue is empty!");
        Q->data[Q->front]=0;
        Q->front = (Q->front+1)%QUEUE_SIZE;
        Q->count--;
}

int QueueFront(LinkQueue *Q)
{
        assert(!QueueEmpty(Q));
        return Q->data[Q->front];
}

int QueueLength(LinkQueue *Q)
{
        return Q->count;
}

void PrintLinkQueue(LinkQueue *Q)
{
        int i;
        for(i=Q->front; irear; i++)
                printf("%4d",Q->data[i]);
        printf("\n");int main(void)
{
        LinkQueue *Q=(LinkQueue *)malloc(sizeof(LinkQueue));

        QueueInit(Q);
        EnQueue(Q,1);
        EnQueue(Q,2);
        EnQueue(Q,3);
        EnQueue(Q,4);
        EnQueue(Q,5);
        printf("打印这个队列:\n");
        PrintLinkQueue(Q);

        printf("这个队列的长度为: \n%4d",QueueLength(Q));
        printf("\n");

        printf("插入二个元素6,7后的队列:\n");
        EnQueue(Q,6);
        EnQueue(Q,7);
        PrintLinkQueue(Q);
        printf("现在这个队列的长度为: \n%4d",QueueLength(Q));
        printf("\n");

        printf("删除两个元素后的队列为:\n");
        DeQueue(Q);
        DeQueue(Q);
        PrintLinkQueue(Q);
        printf("现在这个队列的长度为: \n%4d",QueueLength(Q));
        printf("\n");

        return 0;
}

}




阅读(1612) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~