• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++顺序循环队列

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

CycleStack

//顺序循环队列
#include<iostream>
using namespace std;
typedef int elemType;
const int MAXSIZE = 20;

struct Queue
{
    elemType data[MAXSIZE];
    int front;//头指针
    int rear;//尾指针,若队列不空,指向队列队尾元素的下一个位置
};

//初始化
void InitQueue(Queue *q)
{
    q->front = q->rear = 0;
}

//求队列元素数
int LengthQueue(Queue *q)
{
    return (q->rear - q->front + MAXSIZE)%MAXSIZE;
}

//若队列未满,插入元素e为队列新的队尾元素
void EnQueue(Queue *q, elemType e)
{
    if((q->rear+1)%MAXSIZE == q->front)
        cout<<"出错,队列已满."<<endl;
    q->data[q->rear] = e;
    q->rear = (q->rear +1)%MAXSIZE;
}

//若队列不空,删除队头元素
void DeQueue(Queue *q, elemType *e)
{
    if(q->front == q->rear)
        cout<<"出错,队列为空."<<endl;
    *e = q->data[q->front];
    q->front = (q->front+1)%MAXSIZE;
}

//遍历队列
void TraQueue(Queue *q)
{
    if(q->front == q->rear)
        cout<<"队列为空."<<endl;
    int num = 1;
    for(int i=(q->front)%MAXSIZE;i<q->rear;i=(i+1)%MAXSIZE)
    {
        cout <<num<<":\t"<<q->data[i]<<endl;
    }
}

int main()
{
    Queue q;
    InitQueue(&q);
    for(int i=1;i<7;i++)
        EnQueue(&q,i);
    int length = LengthQueue(&q);
    cout <<"队列长度为: "<< length <<endl;
    TraQueue(&q);
    cout<<endl;

    cout<<"删除队头元素后,队列为:"<<endl;
    elemType x = 0;
    DeQueue(&q,&x);
    TraQueue(&q);
    cout<<endl;

    for(int i=0;i<5;i++)
        DeQueue(&q,&x);
    TraQueue(&q);
    cout<<endl;

    return 0;
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
POJC++程序设计编程题#3编程作业—文件操作与模板发布时间:2022-07-13
下一篇:
C#面向对象--练习题发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap