连续存储结构的循环队列实现

1.队列是一种删除只能在队头,插入只能在队尾的线性表,循环队列是为了克服“假溢出”而提出的一种对队列的改进,将队列看成一个首尾相接的环。连续存储结构的循环队列是通过数组实现的。

2.操作:先进先出

3.初始化(空队列):pront = tail =conut =  0;

4.非空队列中,pront指向对头元素,tail指向队尾元素的下一个单元。

5.空队列和满队列都满足pront = tail,所以通过计数器count来统计元素个数。

6.队列结构体

struct queue
{
       datatype data[MAXSIZE];
       int front;
       int tail;
       int count;
};

7.队列的基本运算实现代码

#include<iostream>
using namespace std;
typedef int datatype;
#define MAXSIZE 100
struct queue
{
       datatype data[MAXSIZE];
       int front;
       int tail;
       int count;
};
// init queue
void initqueue(queue *s)
{
     s->front = s->tail = s->count = 0;
}
// in queue
queue * inqueue(queue *s, datatype x)
{
     if(s->count ==MAXSIZE)
     return NULL;                  // overout
     s->data[s->tail] = x;
     s->tail = s->tail + 1;
     s->count++;
}
// creat queue
queue *creatqueue(int n)
{
      queue *p = new queue;
      initqueue(p);
      for(int i = 0; i < n; i++)
      {
              datatype x;
              cin >> x;
              inqueue(p, x);
      }
      return p;
}
// out queue
int outqueue(queue *s, datatype &x)
{
    if(s->front == s->tail)
    return -1;
    x = s->data[s->front];
    s->front = s->front + 1;
    s->count--;
    return 0;
}
// print queue
int show(queue *s)
{
    if(s->front == s->tail)
    return -1;              //empty queue
    while(s->front != s->tail)
    {
                   datatype y;
                   outqueue(s, y);
                   cout << y << ends;
    }
    cout << endl;
    return 0;
}
int main()
{
    queue *q = creatqueue(5);
    show(q);
    system("pause");
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值