数据结构队列例题一顺序实现

编程入门 行业动态 更新时间:2024-10-10 04:25:04

数据结构队列<a href=https://www.elefans.com/category/jswz/34/1767926.html style=例题一顺序实现"/>

数据结构队列例题一顺序实现

仅供个人复习使用

#include<iostream>
#define MAXSIZE 6using namespace std;typedef struct
{int *base;int front;int rear;}sqQueue;void Init(sqQueue &Q) //初始化 
{Q.base = new int[MAXSIZE];Q.front = Q.rear = 0;
}
int QueueLength(sqQueue Q)//求队列长度
{return (Q.rear - Q.front + MAXSIZE) % MAXSIZE; //防止队头在队尾后面 
}void EnQueue(sqQueue &Q , int e)//插入数据 
{//一直插入队尾元素会造成数组逸出现象,事实上,如果队头元素有出队的话此时队列并不是满的//这种现象为"假逸出",巧妙的方法是把队列变成一个环状的空间,队列大小为M时,有M-1个元素就认为是队满 if( (Q.rear + 1) % MAXSIZE == Q.front) // 循环意义上的队满 {cout<<"队满"<<'\n';return;}Q.base[Q.rear] = e; Q.rear = (Q.rear + 1) % MAXSIZE;}void DeQueue(sqQueue &Q , int &e)//删除数据 
{if(Q.front == Q.rear) {cout<<"队空"<<'\n';}e = Q.base[Q.front];Q.front = (Q.front + 1) % MAXSIZE;
}int GetHead(sqQueue &Q)
{if(Q.rear != Q.front){return Q.base[Q.front];}
}
int GetRear(sqQueue &Q)
{if(Q.rear != Q.front){return Q.base[(Q.rear - 1 + MAXSIZE) % MAXSIZE];//防止队尾指向0而数组越界 }}int main()
{sqQueue Q;Init(Q);int e = 0;cout<<"输入数据,输入-1时停止"<<'\n';while(1) { int x;cin>>x; if(x == -1) break; EnQueue(Q,x);}cout<<"队列长度为:";cout<<QueueLength(Q)<<'\n';DeQueue(Q,e);cout<<"已删除队头数据:"<<e<<'\n';cout<<"队头元素为:"<<GetHead(Q);cout<<"队尾元素为:"<<GetRear(Q);return 0;}

更多推荐

数据结构队列例题一顺序实现

本文发布于:2023-11-16 18:22:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1629645.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:例题   数据结构   队列   顺序

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!