【数据结构】宜宾大学-计院-实验五

news2024/10/27 14:36:55

实验五 栈和队列(队列的基本操作)

  • 实验目的:
    • 链表结点结构:
    • 实验结果:
      • 运行截图:
      • 代码实现:

实验目的:

1.掌握队列的顺序存储结构和链式存储结构
2.实现队列的基本操作,包括队列的建立、入队列、出队列、判断队列是否空等
实验内容:
1.完成链队列的建立
2.实现链队列的入队操作
3.实现链队列的出队列操作
4.实现判断链队列是否为空
5.实现销毁链队列
6.自己设计一组数据,模拟入队列,出队列

链表结点结构:

typedef struct QNode
{
int data;
struct QNode *Next;
}QNode,*QueuePtr;
队列结构:
struct
{
QueuePtr front;
QueuePtr rear;
}Ptr;

实验结果:

每个同学都要记录实验结果(无论对与错),如果程序调试中有什么错误,记录并分析原因,必须另寻时间调试成功。
实验报告:(及时撰写实验报告)

答:代码有点挫,但能正确跑,遇到的问题都解决了

运行截图:

在这里插入图片描述

代码实现:

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;

typedef int datatype;
//节点成员变量的建立
typedef struct QNode
{
	datatype data;
	struct QNode* Next;
}QNode, *QueuePtr;

//匿名结构体,成员变量为队列首尾指针
struct
{
	QueuePtr front = NULL;
	QueuePtr rear = NULL;
}Ptr;

//开辟一个新节点
QNode* BuyNode(datatype x)
{
	QNode* newnode = (QNode*)malloc(sizeof(QNode));
	if (newnode == NULL) return NULL;
	else
	{
		newnode->data = x;
		newnode->Next = NULL;
	}
	return newnode;
}

//初始化头节点
void InitHead(QueuePtr head)
{
	head = BuyNode(0);
	Ptr.front = head;
	Ptr.rear = head;
}

//销毁链式队列
void DestroyQueue(QueuePtr head)
{
	QueuePtr pcur = head;
	while (pcur)
	{
		QueuePtr next = pcur->Next;
		free(pcur);
		pcur = next;
	}
}

//队列插入元素的实现(即入队列)
void push(datatype x)
{
	QueuePtr node = BuyNode(x);
	Ptr.rear->Next = node;
	Ptr.rear = node;
}

//队列元素的删除(即头删)
void pop()
{
	QueuePtr del = Ptr.front->Next;
	if (del == NULL)
	return;
	else
	{
		QueuePtr next = del->Next;
		Ptr.front->Next = next;

		free(del);
		del = NULL;
	}
}

//判空
bool EmptyQueue()
{
	if (Ptr.front->Next == NULL)
		return true;
	else
		return false;
}

//获取队列首元素(即出队列)
datatype GetHead()
{
	if (Ptr.front->Next == NULL)
	return 0;
	else
	return Ptr.front->Next->data;
}

//队列当前元素个数
int SizeQueue()
{
	int count = 0;
	QueuePtr pcur = Ptr.front->Next;
	while (pcur)
	{
		count++;
		QueuePtr next = pcur->Next;
		pcur = pcur->Next;
	}
	return count;
}

int main()
{
	QueuePtr head = NULL;
	InitHead(head);
	push(1);
	push(2);
	push(3);
	push(4);
	push(5);
	push(6);
	push(7);
	push(8);

	cout << "队列中当前元素的个数:" << SizeQueue() << endl << endl;
	cout << "依次输出队列中所有元素:" << endl;
	while (!EmptyQueue())
	{
		cout << GetHead() << " ";
		pop();
	}
	cout << endl << endl;
	cout << "销毁队列:" << endl;
	DestroyQueue(head);
	cout << "销毁队列后队列中的元素个数:" << SizeQueue();
	return 0;
}

实验三传送门

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2224732.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(北京政务服务满意度公司)满意度调查助力服务质量提升

在当今社会&#xff0c;&#xff08;政务服务满意度公司&#xff09;政务窗口服务的质量直接关系到市民的日常生活和城市的健康发展。为了解市民对政务窗口服务的满意度&#xff0c;提升服务质量&#xff0c;某市委托民安智库专业市场调查公司开展了政务窗口服务满意度调查&…

若依框架部署到服务器刷新或者是退出登录出现404

登出错误404 改成/登出的时候重定向到根路径&#xff0c;让nginx匹配去找dist目录下的index.html文件 或者是直接改为/index.html&#xff0c;少一步可能会快一点&#xff1f; 不过会变得很丑,算了还是根目录吧 原版是index&#xff0c;那玩意是 针对路由的&#xff0c;而打包…

【重生之我要苦学C语言】 函数递归

函数递归 什么是递归&#xff1f; 递归就是函数自己调用自己 递归一定是基于函数的 在任何一次函数调用中&#xff0c;都会申请资源&#xff0c;申请的是内存中栈区的资源 栈区的资源是有限的&#xff0c;因此函数不能无限次的递归 递归的思想 把一个大型复杂问题层层转化为…

解决docker拉取readeck镜像报Error response from daemon: toomanyrequests问题

readeck 是一个内容中心&#xff0c;目前已支持中文翻译 这是本地化部署后的效果&#xff1a; 原命令为&#xff1a; docker run --rm -ti -p 8000:8000 -v readeck-data:/readeck codeberg.org/readeck/readeck:latest Unable to find image codeberg.org/readeck/readeck:la…

数据库的诗篇:深入探索 MySQL 表操作的艺术与哲学

文章目录 前言&#x1f338;一、创建表——搭建数据存储的基础框架1.1 基本语法1.2 创建表的实际案例解释&#xff1a; 1.3 表设计的最佳实践 &#x1f338;二、查看表结构——快速了解数据库设计2.1 使用 DESC 命令解释&#xff1a; 2.2 使用 SHOW COLUMNS 命令2.3 使用 SHOW …

[MySQL#2] 库 | 表 | 详解CRUD命令 | 字符集 | 校验规则

目录 一. 库操作 1. 创建数据库 2. 字符集和校验规则 校验规则对数据库的影响 显示创建数据库时对应的命令 3. 修改数据库 4. 数据库删除 备份和恢复 还原 查看连接情况 二. 表操作 1. 创建表&#xff08;定义实例化格式 2. 创建表案例 &#xff08;实例化数据类型…

【Fargo】12:参考mediasoup 重构 udpsocket管理、定时器、uv生命周期

udp 发送的包是动态分配的内存,即使考虑rtppacket类型,也是动态分配的内存构造rtppacket,因此应该考虑对这块内存管理起来。之前的实现采用了一个固定分配的内存,可能会节省内存,固定大小虽然不够灵活,但是可以规避频繁分配导致的内存碎片。每次都动态分配一个uv_udp_sen…

vue3+vite 部署npm 包

公司需要所以研究了一下怎么部署安装&#xff0c;比较简单 先下载个vue项目 不用安准路由&#xff0c;pinna 啥的&#xff0c;只需要一个最简单的模版 删掉App.vue 中的其它组件 npm create vuelatest 开始写自定义组件 新建一个el-text 组件, name是重点&#xff0c;vue3中…

【10天速通Navigation2】(三) :Cartographer建图算法配置:从仿真到实车,从原理到实现

前言 往期内容&#xff1a; 第一期&#xff1a;【10天速通Navigation2】(一) 框架总览和概念解释第二期&#xff1a;【10天速通Navigation2】(二) &#xff1a;ROS2gazebo阿克曼小车模型搭建-gazebo_ackermann_drive等插件的配置和说明 本教材将贯穿nav2的全部内容&#xff0c…

FreeSWITCH 简单图形化界面30 - 使用MYODBC时可能遇到的错误

FreeSWITCH 简单图形化界面30 - 使用MYODBC时可能遇到的错误 测试环境1、 MYODBC 3.51.18 or higher2、分析和解决2.1 解决1&#xff0c;降级MySQL ODBC2.2 解决2&#xff0c;修改FreeSWITCH代码 测试环境 http://myfs.f3322.net:8020/ 用户名&#xff1a;admin&#xff0c;密…

双11必买物品清单有哪些?双11推荐购买清单分享

随着双11购物节的到来&#xff0c;这个由光棍节演变而来的全民狂欢节已经成为了中国乃至全球最大的在线购物盛事。对于精明的购物者来说&#xff0c;双11不仅是一个购物的好时机&#xff0c;更是一个精打细算、囤货备需的黄金时刻。那么双11必买物品清单有哪些&#xff1f;在这…

基于Arduino的LED亮灭按键控制

一、项目简介 通过一个按键控制LED的亮灭&#xff0c;实现按键按一下LED点亮&#xff0c;再按一下LED熄灭&#xff0c;交替循环。 二、控制原理 1. 按键检测原理&#xff1a; 将Arduino的监测端口设置为输入上拉模式&#xff08;INPUT_PULLUP&#xff09;&#xff0c;用于连…

C++结合图形编程与物联网:你更偏向哪种方式来学习信息学奥赛?

随着信息学奥赛在全国范围内的热度逐年攀升&#xff0c;学生和家长们越来越重视如何有效备赛。传统的编程学习方式侧重于算法和数据结构&#xff0c;但随着科技的发展&#xff0c;图形化编程与物联网&#xff08;IoT&#xff09;项目逐渐成为新兴的学习路径。通过C结合图形化编…

直播系统源码技术搭建部署流程及配置步骤

系统环境要求 PHP版本&#xff1a;5.6、7.3 Mysql版本&#xff1a;5.6&#xff0c;5.7需要关闭严格模式 Nginx&#xff1a;任何版本 Redis&#xff1a;需要给所有PHP版本安装Redis扩展&#xff0c;不需要设置Redis密码 最好使用面板安装&#xff1a;宝塔面板 - 简单好用的…

存储过程(SQL)

1.存储过程 存储过程&#xff08;Stored Procedure&#xff09;是一组为了完成特定功能的SQL语句集&#xff0c;经编译后存储在数据库中&#xff0c;用户通过指定存储过程的名字并给定参数&#xff08;如果该存储过程带有参数&#xff09;来调用执行它。 2.MySQL存储过程创建…

qt QApplication详解

一、概述 QApplication是Qt应用程序的基础类&#xff0c;负责设置和管理应用的环境。它的主要功能包括&#xff1a;初始化应用程序、管理事件循环、处理命令行参数、提供全局设置&#xff08;如样式和调色板&#xff09;以及创建和管理主窗口。通常在main函数中创建QApplicati…

基于物联网的智慧考场系统设计(论文+源码)

1. 功能设计 &#xff08;1&#xff09;温度监测与控制功能&#xff1a; 系统需要能够实时采集考场内的温度信息&#xff0c;通过DS18B20传感器获取准确的数据&#xff0c;并在OLED屏幕和APP上显示。当温度异常过高时&#xff0c;系统应自动启动继电器&#xff0c;模拟空调开启…

【网络协议栈】Tcp协议(下)的可靠性和高效性(超时重传、快速重传、拥塞控制、流量控制)

绪论: 承接上文&#xff0c;上文写到Tcp协议的结构以及对tcp协议的性能优化的滑动窗口&#xff0c;本章我们将继续了解Tcp协议的可靠性和高效性的具体展示。后面我将继续完善网络协议栈的网络层协议敬请期待&#xff01; 话不多说安全带系好&#xff0c;发车啦&#xff08;建议…

普推知产:商标初审已下,商标申请通过如何高些!

近期下来一批商标注册的初步审公告通知书&#xff0c;一些客户对商标下证要求比较高的&#xff0c;普推知产商标老杨发现&#xff0c;要像下证高核心还是在于名称&#xff0c;名称起好备用的多&#xff0c;让商标专业人士经检索后层层过滤后提报&#xff0c;通过会好很多。 普推…