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

这篇具有很好参考价值的文章主要介绍了数据结构队列例题一顺序实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

仅供个人复习使用文章来源地址https://www.toymoban.com/news/detail-742098.html

#include<iostream>
#define MAXSIZE 6

using 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;
	
}

到了这里,关于数据结构队列例题一顺序实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 头歌(C语言)-数据结构与算法-队列-第1关:实现一个顺序存储的队列

    任务描述 相关知识 顺序存储的队列 顺序队列的主要操作 编程要求 测试说明 任务描述 本关任务:实现 step1/SeqQueue.cpp 中的 SQ_IsEmpty 、 SQ_IsFull 、 SQ_Length 、 SQ_In 和 SQ_Out 五个操作函数,以实现判断队列是否为空、是否为满、求队列长度、队列元素入队和出队等功能。 相关知

    2024年02月06日
    浏览(93)
  • 数据结构之队列详解(包含例题)

    队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 我们可以用 单链表模拟 实现顺序队列。 队列采

    2024年02月13日
    浏览(30)
  • 数据结构例题代码及其讲解-栈与队列

    栈Stack 后进先出 ​ 栈的结构体定义及基本操作。 初始化 ​ 这里初始化时是将栈顶指针指向-1,有些则是指向0,因此后续入栈出栈的代码略微有点区别 判断栈是否为空 压栈操作 由于初始时栈顶指针指向-1,因此需要先变化栈顶指针,然后入栈操作; 且当MaxSize为50时候,数

    2024年02月10日
    浏览(30)
  • 数据结构(C语言实现)——栈和队列的介绍及基本操作的实现(动态顺序栈+链队)

    今天我们来学习另外两个线性结构——栈和队列,栈和队列是操作受限的线性表,因此,可称为限定性的数据结构。 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守

    2023年04月19日
    浏览(29)
  • 【C++】【数据结构】循环队列的基本操作(初始化、入队、出队、取队头元素、遍历输出队列、求队列长度)顺序队列的算法实现【附全代码】

    使用c++完成数据结构循环队列的基本操作,包括(初始化、入队、出队、取队头元素、遍历输出队列、求队列长度等),可直接编译运行。 队列 又称为 “先进先出” (FIFO)线性表。限定插入操作只能在队尾进行,而删除操作只能在队首进行。 循环队列 ——采用 顺序存储结构

    2023年04月16日
    浏览(38)
  • 数据结构,队列,顺序表队列,链表队列

            队列是一种常见的数据结构,它具有先进先出(First-In-First-Out,FIFO)的特性,类似于排队等候的场景。以下是队列的要点: 1. 定义:队列是一种线性数据结构,由一系列元素组成,可以进行插入和删除操作。插入操作(称为入队)只能在队列的末尾进行,删除操

    2024年02月11日
    浏览(25)
  • 九、数据结构——顺序队列中的循环队列

    一、循环队列的定义 二、循环队列的实现 三、循环队列的基本操作 ①初始化 ②判空 ③判满 ④入队 ⑤出队 ⑥获取长度 ⑦打印 四、循环队列的应用 五、全部代码 在数据结构中,队列(Queue)是一种常见的线性数据结构,遵循先进先出(First In First Out,FIFO)的原则。循环队

    2024年02月15日
    浏览(28)
  • 青岛大学_王卓老师【数据结构与算法】Week05_14_队列的顺序表示和实现2_学习笔记

    本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享, 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础–第05周14–3.5队列的表示和实现3–

    2024年02月16日
    浏览(37)
  • 青岛大学_王卓老师【数据结构与算法】Week05_13_队列的顺序表示和实现1_学习笔记

    本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享, 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础–第05周13–3.5队列的表示和实现2–

    2024年02月17日
    浏览(30)
  • 【脚踢数据结构】队列(顺序和链式)

    (꒪ꇴ꒪ ),Hello我是 祐言QAQ 我的博客主页:C/C++语言,Linux基础,ARM开发板,软件配置等领域博主🌍 快上🚘,一起学习,让我们成为一个强大的攻城狮! 送给自己和读者的一句鸡汤🤔: 集中起来的意志可以击穿顽石! 作者水平很有限,如果发现错误,可在评论区指正,感谢🙏

    2024年02月12日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包