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

全部博文(72)

文章存档

2010年(5)

2009年(14)

2008年(53)

分类: C/C++

2008-10-07 17:27:56

#include
#include
#ifndef QUEUE_SIZE
#define QUEUE_SIZE 12
#endif

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

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

int QueueFull(LinkQueue *Q)
{
        return (Q->rear+1)%QUEUE_SIZE==Q->front;
}

int QueueEmpty(LinkQueue *Q)
{
        return (Q->front+1)%QUEUE_SIZE==Q->rear;
}

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;
}

void DeQueue(LinkQueue *Q)
{
        if(QueueEmpty(Q))
                printf("queue is empty!");
        Q->data[Q->front]=0;
        Q->front = (Q->front+1)%QUEUE_SIZE;
}

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


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));
        int i;
        for(i=1; i<=20; i++)
                EnQueue(Q,i);
        PrintLinkQueue(Q);
        #if 0
        QueueInit(Q);
        EnQueue(Q,1);
        EnQueue(Q,2);
        EnQueue(Q,3);
        EnQueue(Q,4);
        EnQueue(Q,5);
        printf("打印这个队列:\n");
        PrintLinkQueue(Q);


        printf("插入二个元素6,7后的队列:\n");
        EnQueue(Q,6);
        EnQueue(Q,7);
        PrintLinkQueue(Q);

        printf("删除两个元素后的队列为:\n");
        DeQueue(Q);
        DeQueue(Q);
        PrintLinkQueue(Q);
        #endif

        return 0;


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