前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >顺序循环队列(只设尾指针和所含元素个数)

顺序循环队列(只设尾指针和所含元素个数)

作者头像
别团等shy哥发育
发布2023-02-27 10:43:35
3380
发布2023-02-27 10:43:35
举报
文章被收录于专栏:全栈开发那些事

问题引入:

假设以一维数组elem[0…m-1]存储循环队列的元素,同时设变量rear和quelen分别指示循环队列中队尾元素的位置和队列中所含元素个数。 (1)说明该队列特点 (2)给出该循环队列的队空、队满条件 (3)编程实现入队列算法 (4)编程实现出队列算法

分析:

结构体:

代码语言:javascript
复制
typedef struct node {
	DataType elem[M];
	int rear;//队尾指针
	int quelen;//元素个数
}SeQueue;

SeQueue Q;

代码语言:javascript
复制
队空条件:Q.quelen == 0
代码语言:javascript
复制
队满条件:Q.quelen == M

代码实现:

LQueue.h:

代码语言:javascript
复制
#pragma once
typedef struct node {
	DataType elem[M];
	int rear;//队尾指针
	int quelen;//元素个数
}SeQueue;
//初始化
void Initiate(SeQueue *Q) {
	Q->quelen = 0;
	Q->rear = -1;
}
//入队列
int Insert(SeQueue &Q, DataType x)
{
	if (Q.quelen == M)//队列已满
	{
		printf("队列已满!");
		return 0;
	}
	Q.rear = (Q.rear + 1) % M;
	Q.elem[Q.rear] = x;
	Q.quelen++;
	return 1;
}
//出队列
int Delete(SeQueue &Q, DataType *x)
{
	if (Q.quelen == 0)//队列已空
	{
		printf("队列已空!");
		return 0;
	}
	*x = Q.elem[(Q.rear - Q.quelen + 1 + M)%M];
	Q.quelen--;
	return 1;
}

test.cpp

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>
typedef int DataType;
constexpr auto M = 100;
#include"LQueue.h"
int main() {
	int x;
	SeQueue Queue;
	Initiate(&Queue);
	for (int i = 0; i < 10; i++)
	{
		Insert(Queue, i + 1);
	}
	int length = Queue.quelen;
	printf("出队列的顺序如下:\n");
	for (int i = 0; i < length; i++) {
		Delete(Queue, &x);
		printf("%d ", x);
	}

	return 0;
}

运行结果

先插入10个元素,再依次出队列

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题引入:
  • 分析:
    • 结构体:
    • 代码实现:
    • 运行结果
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档