标签:int return 方式 队列 静态 MaxSize front rear
队列是一种只允许在队尾插入元素,在队头插入元素的一种数据结构。就比如我们生活中的排队。队列最主要的是判断队空或者队满。队列的静态方式实现,利用数组设置一个循环的队列。代码如下:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 10
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
/*
判断队列空满:
方案一:代码(浪费一个存储空间,用来判断队满和队空)
方案二:增加一个变量表示队列长度(初始化为0),每增加一个元素长度加一,每删除一个元素
减一。最后长度为MaxSize的队满,长度为0的队空(不浪费)
方案三:增加一个判断型变量表示最近一次插入(0)或者删除的操作 (1),每次增加元素都使
变量置为0,删除元素都使变量置为1。这样结合队头和队尾指针指向同一个地方就可以判断(不浪费)
*/
//静态方式定义队列
typedef struct {
int data[MaxSize];//用静态数组存放元素
int front,rear;//队头指针和队尾指针
}SqQueue;
//静态方式初始化队列(队头队尾都指向0)
void InitQueue(SqQueue &Q){
Q.front = 0;
Q.rear = 0;
}
//静态方式判断是否为空队列
bool isEmpty(SqQueue Q){
if(Q.front==Q.rear){
return true;
}else{
return false;
}
}
//静态方式入队
bool EnQueue(SqQueue &Q,int x){
if((Q.rear+1)%MaxSize==Q.front){//队满报错
return false;
}
Q.data[Q.rear] = x;
Q.rear = (Q.rear+1)%MaxSize;//队尾+1取模(形成循环结构队列)
return true;
}
//静态方式入队
bool DeQueue(SqQueue &Q,int &x){
if(Q.front==Q.rear){//队空报错
return false;
}
x = Q.data[Q.rear];
Q.front = (Q.front+1)%MaxSize;//队头+1取模(形成循环结构队列)
return true;
}
//静态方式获得队头元素
bool GetQueue(SqQueue &Q,int &x){
if(Q.front==Q.rear){//队空报错
return false;
}
x = Q.data[Q.rear];
return true;
}
//队列元素个数计算((rear+MaxSize-front)%MaxSize)
int main(int argc, char** argv) {
SqQueue Q;
InitQueue(Q);
return 0;
}
标签:int,return,方式,队列,静态,MaxSize,front,rear 来源: https://blog.51cto.com/14049943/2592872
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。