C++数据结构X篇_09_C++实现队列的顺序存储与链式存储

2023-11-09

本篇参考C++实现队列的顺序存储与链式存储整理,先搞懂结构框架,后期根据视频利用c对内容实现,也可以对c有更高的提升。

队列是一种特殊的数据存储结构,与栈不同的是其数据存储与访问顺序为先进先出,形式如下:
在这里插入图片描述
下面附上队列顺序存储与链式存储的实现代码:

1. 顺序存储

#include <iostream>
using namespace std;
const int max_size=1024;
//定义队列
class seqqueue
{
public:
	void* data[max_size];
	int size;
};
//初始化队列
seqqueue* init_seqqueue()
{
	seqqueue* queue=new seqqueue;
	for (int i = 0; i < max_size; i++)
	{
		queue->data[i]=NULL;
	}
	queue->size=0;
	return queue;
}
//入队
void push_seqqueue(seqqueue* queue,void* data)
{
	queue->data[queue->size]=data;
	queue->size++;
}
//返回队头元素
void* front_seqqueue(seqqueue* queue)
{
	return queue->data[0];
}
//出队
void pop_seqqueue(seqqueue* queue)
{
	for (int i = 0; i < queue->size; i++)
	{
		queue->data[i]=queue->data[i+1];
	}
	queue->size--;
}
int main()
{
	//创建队列
	seqqueue* queue=init_seqqueue();
	//创建数据
	int arr[9];
	for (int i = 0; i < 9; i++)
	{
		arr[i]=i+1;
	}
	//数据入队
	for (int i = 0; i < 9; i++)
	{
		cout<<"第"<<i+1<<"个元素入队:"<<arr[i]<<endl;
		push_seqqueue(queue,&arr[i]);
	}
	cout<<endl;
	//数据出队
	for (int i = 0; i < 9; i++)
	{
		cout<<"第"<<i+1<<"个元素出队:"<<*((int*)front_seqqueue(queue))<<endl;
		pop_seqqueue(queue);
	}
	system("pause");
	return 0;
}

运行结果:
在这里插入图片描述

2. 链式存储

#include <iostream>
using namespace std;
//创建节点
class node
{
public:
	node* next;
};
//创建队列
class linkqueue
{
public:
	node head;
	int  size;
};
//队列初始化
linkqueue* init_linkqueue()
{
	linkqueue* queue=new linkqueue;
	queue->head.next=NULL;
	queue->size=0;
	return queue;
}
//入队
void push_linkqueue(linkqueue* queue,node* data)
{
	data->next=queue->head.next;
	queue->head.next=data;
	queue->size++;
}
//出队
void pop_linkqueuq(linkqueue* queue)
{
	node* pcurrent=queue->head.next;
	for (int i = 0; i < queue->size-1; i++)
	{
		pcurrent=pcurrent->next;
	}
	pcurrent=NULL;
	queue->size--;
}
//返回队顶元素
node* top_linkqueuq(linkqueue* queue)
{
	node* pcurrent=queue->head.next;
	for (int i = 0; i < queue->size-1; i++)
	{
		pcurrent=pcurrent->next;
	}
	return pcurrent;
}
class my_data
{
public:
	node* p;
	char  data;
};
int main()
{
	//创建队
	linkqueue* queue=init_linkqueue();
	//创建数据
	string str="ABCDEFGHI";
	my_data data[9];
	for (int i = 0; i < str.size(); i++)
	{
		data[i].p=NULL;
		data[i].data=str[i];
	}
	//入队
	for (int i = 0; i < str.size(); i++)
	{
		cout<<"第"<<i+1<<"个入队元素为:"<<str[i]<<endl;
		push_linkqueue(queue,(node*)&data[i]);
	}
	cout<<endl;
	//出队
	for (int i = 0; i < str.size(); i++)
	{
		cout<<"第"<<i+1<<"个出队元素为:"<<((my_data*)top_linkqueuq(queue))->data<<endl;
		pop_linkqueuq(queue);
	}
	system("pause");
	return 0;
}

运行结果:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++数据结构X篇_09_C++实现队列的顺序存储与链式存储 的相关文章

  • 使用 CLion 进行 OpenCV Windows 设置

    我想在 Windows 上为 CLion IDE 设置 OpenCV 我尝试使用 OpenCV 3 1 和 2 4 得到相同的结果 我有 Windows 10 64 位 CLion 使用 cygwin 环境 到目前为止我做了什么 1 从Op
  • 如何在另一个应用程序中挂钩 api 调用

    我正在尝试挂钩另一个应用程序的 ExtTextOut 和 DrawTextExt GDI 方法调用 我知道我需要使用 GetProcAddress 来查找 gdi32 dll 中那些方法的地址 并用我的函数的地址覆盖我想要挂钩的进程中的地址
  • 在 Java 中创建 T 的新实例

    在C 中 我们可以定义一个泛型class A
  • 删除是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 C 编程 free 如何知道要释放多少 https stackoverflow com questions 1518711 c programming how does free know how m
  • 是否存在指向不同类型的指针具有不同大小的平台?

    C 标准允许指向不同类型的指针具有不同的大小 例如sizeof char sizeof int 是允许的 但是 它确实要求如果将指针转换为void 然后转换回其原始类型 它必须与其原始值进行比较 因此 从逻辑上来说 sizeof void
  • 在开关中使用“goto”?

    我看到了一个建议的编码标准 内容如下Never use goto unless in a switch statement fall through 我不跟 这个 例外 案例到底是什么样的 这证明了goto 此构造在 C 中是非法的 swi
  • 在 omp 并行 for 循环中使用 unique_ptr 会导致 SEG.FAULT

    采取以下代码 include
  • 使用 LINQ 更新 IEnumerable 对象的简单方法

    假设我有一个这样的业务对象 class Employee public string name public int id public string desgination public int grade List
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • UI 函数在快速事件完成之前触发

    我有一个停靠在 Silverlight 应用程序中的 Web 浏览器框架 有时会在其上弹出全窗口 XAML Silverlight UI 元素 我已经或多或少修复了一个老问题 即 Web 框架的内容似乎与 Silverlight 内容不能很
  • 使用 C# 和 wpf 创建类似 Dock 的应用程序

    我需要创建一个与我们购买笔记本电脑时获得的应用程序类似的应用程序 仅当鼠标指针到达窗口顶部时它才可见 那么我怎样才能使用 C 4 0 来做到这一点呢 http www notebookcheck net uploads pics win2
  • 使用具有抗锯齿功能的 C# 更改抗锯齿图像的背景颜色

    我有一个图像需要更改背景颜色 例如 将下面示例图像的背景更改为蓝色 然而 图像是抗锯齿的 所以我不能简单地用不同的颜色替换背景颜色 我尝试过的一种方法是创建第二个图像 仅作为背景 并更改其颜色并将两个图像合并为一个图像 但是这不起作用 因为
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • 如何使用 NPOI 按地址(A1、A2)获取 Excel 单元格值

    我有一个 Excel 单元格地址 例如 A1 A2 如何使用 C 中的 NPOI 框架以编程方式访问此单元格 我找到的一些 Java POI 示例代码 CellReference cr new CellReference A1 row my
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • 逆向工程 ASP.NET Web 应用程序

    我有一个 ASP NET Web 应用程序 我没有源代码 该 bin 包含 10 个程序集和一个 compiled 文件 我在 App Code dll 上使用 Reflector 它向我显示了类和命名空间之类的东西 但它太混乱了 有没有什
  • 在 C#.NET 中安全删除文件

    在我正在做的一个项目中 我想为用户提供 安全 删除文件的选项 例如 用随机位或 0 覆盖它 在 C NET 中是否有一种简单的方法可以做到这一点 效果如何 你可以调用系统内部删除 http technet microsoft com en
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t
  • 如何得知客户端从服务器的下载速度?

    根据客户的下载速度 我想以低质量或高质量显示视频 任何 Javascript 或 C 解决方案都是可以接受的 Thanks 没有任何办法可以确定 您只能测量向客户端发送数据的速度 如果没有来自客户端的任何类型的输入来表明其获取信息的速度 您
  • 结构化绑定的用例有哪些?

    C 17 标准引入了新的结构化绑定 http en cppreference com w cpp language structured binding功能 最初是proposed http www open std org jtc1 sc

随机推荐

  • vue使用video.js

    1 安装 npm install video js 2 引入全局样式 main js 中加入 import video js dist video js css 3 使用
  • 测试两台服务器之间的网络带宽

    一 选择iperf的原因 为了测试两台服务器在局域网内的带宽 有人说 使用文件拷贝的方式 其实测试出来的都不太准确 受限于磁盘IO等等因素的影响 为了有较准确的测试结果 iperf是最好的选择 二 iperf安装 yum install y
  • Vue---内置指令、自定义指令(详细)、全局指令与局部指令

    目录 一 v on 二 v bind v model 三 v if v else v show v for 四 v text v big 五 v html 六 v cloak 七 v once 八 v pre 九 自定义指令 函数式 十 自
  • 改和看别人的代码是一种什么感受

    工作里面可能会沉淀下来很多的东西 比如文档 代码 脚本 或者图片 甚至你留下的趣事或者 案底 对于修改代码 我很多年前就体验过一次 是修改自己写的代码 记得刚毕业的时候写了一个小的项目 是使用Java的Swing技术实现的 能够对一个表格做
  • 在 Kubernetes Pod中直接操作主机

    创建以特权模式启动容器 apiVersion v1 kind Pod metadata name pod privileged namespace default spec containers command sh c sleep 360
  • 初识Spring Boot(Spring Boot基础学习)

    Spring Boot基础 学习目标 能够理解 Spring 的优缺点 能够理解 Spring Boot 的特点 能够理解 Spring Boot 的核心功能 能够搭建 Spring Boot 的环境 能够完成 application pr
  • Android中的RecyclerView下拉/上拉刷新数据

    在Android中的列表视图 我们这里以RecyclerView为例 中有很多数据的时候 往往要采取限制数据条目显示 然后通过刷新再添加新的数据显示 这样看的就会比较美观 那么这种列表视图是怎么实现刷新的呢 我们一起来看看吧 我们先看看美团
  • tensorflow代码运行报错Process finished with exit code -1073741819 (0xC0000005)解决方案

    今天运行了一个tensorflow python代码 导致出现Process finished with exit code 1073741819 0xC0000005 报错 本代码大概功能是查询ckpt模型内的结点信息 报错有很多种原因
  • 如何在现有Fabric网络上添加一个Org?

    如何在现有Fabric网络上添加一个Org 本指南基于IBM DeveloperWorks 使用简单的工具将组织添加到现有的Hyperledger Fabric区块链网络中 感谢Bhargav Perepa和Jason Yellick的出色
  • 子查询返回的值不止一个如何处理_从零学会SQL:复杂查询

    一 视图 视图作用 链接数据库与客户 查询时候表中存放的是临时数据 视图可以存放SQL查询语句 避免重复反复输入 降低工作量 SQL语句范例 create view 按性别汇总 性别 人数 as select 性别 count from s
  • 《区块链技术与应用》课堂笔记(五):比特币系统的实现原理

    区块链是一个去中心化的账本 比特币采用了 基于交易的账本模式 transaction based ledger 只记录了转账交易和铸币交易 并没有直接记录每个账户上有多少钱 如果想知道某个比特币账户上有多少钱 要通过交易记录来推算 UTXO
  • vivo 2020届校招在线编程笔试

    题目 运矿车 小v最近在玩一款挖矿的游戏 该游戏介绍如下 1 每次可以挖到多个矿石 每个矿石的重量都不一样 挖矿结束后需要通过一款平衡矿车运送下山 2 平衡矿车有左右2个车厢 中间只有1个车轮沿着导轨滑到山下 且矿车只有在2个车厢重量完全相
  • java实现输出1--100之间的质数

    输出1 100之间的质数 大于1 只能被1和本身整除的 再没有其他因数的数 迭代1 100 每个数都被小于它的数取余一遍 如果有一个为0 则跳出本次循环 都不为0则输出 public static void main String args
  • 学习笔记——Windows CMD设置为UTF-8编码

    Windows CMD设置为UTF 8编码 windows下的cmd的默认编码是GBK编码 有时可能造成乱码问题 下面是我找到的两种更换编码方式为UTF 8的方法 1 临时修改 1 先进入cmd命令窗口 快捷键win键 R 2 直接输入 c
  • LogStash 启动报错

    报错信息如下 exception gt LogStash ConfigLoadingError message gt The following config files contains non ascii characters but
  • Ubuntu搭建Nginx服务器

    Ubuntu搭建Nginx服务器 安装Nginx 配置文件 全局配置文件 子配置文件管理 sites availables和sites enabled default配置文件 启动 停止 重启Nginx 启动 停止 重启 查询 其他设置 自
  • macbookpro接口叫什么_【科普】什么是雷电接口?苹果电脑MACBOOK PRO有吗?

    刚接触笔记本的朋友不知道USB C口是什么 也不知道雷电接口 Thunderbolt 是什么 只知道MACBOOK PRO有雷电3接口 简单来说 雷电接口是USB TYPE C的替代模式 在此了解 什么是USB TYPE C 什么是雷电接口
  • 二叉树前中后层序遍历,迭代实现

    文章目录 前序遍历 代码 Python 代码 C 中序遍历 代码 Python 代码 C 后序遍历 代码 C 后序遍历 进阶写法 代码 Python 代码 C 层序遍历 代码 Python 代码 C 总结 上一篇文章介绍了二叉树的几种遍历方
  • 简历被pass,笔试被淘汰,还有什么办法能直通面试?

    互联网是目前的热门行业 越来越多的年轻人也是一心想要往上扑 1 互联网行业处于成长期 科技行业扶持力度大 未来整个行业的上升空间巨大 我们都知道 两个人同时出发 搭乘巨轮比乘坐小船更容易走的更快更远 互联网行业就是那搜巨轮 借力使力 越早上
  • C++数据结构X篇_09_C++实现队列的顺序存储与链式存储

    本篇参考C 实现队列的顺序存储与链式存储整理 先搞懂结构框架 后期根据视频利用c对内容实现 也可以对c有更高的提升 文章目录 1 顺序存储 2 链式存储 队列是一种特殊的数据存储结构 与栈不同的是其数据存储与访问顺序为先进先出 形式如下 下