Chinaunix首页 | 论坛 | 博客
  • 博客访问: 766269
  • 博文数量: 370
  • 博客积分: 2334
  • 博客等级: 大尉
  • 技术积分: 3222
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-06 16:56
文章分类

全部博文(370)

文章存档

2013年(2)

2012年(368)

分类:

2012-06-09 12:23:45

原文地址:循环队列基本操作 作者:flychenxu

1、 数据结构

#define MAXQUEUE 100

struct SqQueue

{

       int *base;

       int front;

       int rear;

};

2、构造一个空队列

void CreateQueue(struct SqQueue &Q)

{

       Q.base = (int *)malloc(MAXQUEUE * sizeof(int));

       if (Q.base == NULL)

       {

              exit(0);

       }

       Q.front = Q.rear = 0;

}

3、销毁队列

void DestroyQueue(struct SqQueue &Q)

{

       if (Q.base != NULL)

       {

              free(Q.base);

              Q.base = NULL;

              Q.front = Q.rear = 0;

       }

}

4、清空队列

void ClearQueue(struct SqQueue &Q)

{

       Q.front = Q.rear = 0;

}

5、判断队列是否为空

bool EmptyQueue(struct SqQueue Q)

{

       if (Q.front == Q.rear)

       {

              return true;

       }

       else

       {

              return false;

       }

}

6、求队列长度

int LengthQueue(struct SqQueue Q)

{

       int length = 0;

       length = (Q.rear - Q.front + MAXQUEUE) % MAXQUEUE;

       return length;

}

7、队列不空,则返回队头

void GetQueueHead(struct SqQueue Q, int &value)

{

       if (!EmptyQueue(Q))

       {

              value = Q.base[Q.front];

       }

}

8、队列不空,则删除队头

void DelQueueHead(struct SqQueue &Q, int &value)

{

       if (!EmptyQueue(Q))

       {

              value = Q.base[Q.front];

              Q.front = (Q.front+1)%MAXQUEUE;

       }

}

9、插入元素到队列

void InsertQueue(struct SqQueue &Q, int value)

{

       if ((Q.rear + 1) % MAXQUEUE == Q.front)

       {

              printf("队列已满\n");

              return;

       }

       Q.base[Q.rear] = value;

       Q.rear = (Q.rear + 1) % MAXQUEUE;

}

10、遍历队列元素

void TraverseQueue(struct SqQueue Q)

{

       if (!EmptyQueue(Q))

       {

              int i = Q.front;

              while (i != Q.rear)

              {

                     printf("%d ", Q.base[i]);

                     i = (i+1) % MAXQUEUE;

              }

              printf("\n");

       }

}

阅读(411) | 评论(0) | 转发(0) |
0

上一篇:单链表算法

下一篇:查找算法

给主人留下些什么吧!~~