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

news2024/11/26 13:39:47

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

文章目录

  • 1. 顺序存储
  • 2. 链式存储

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

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

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

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

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

相关文章

Python教程:全局变量和局部变量

变量的作用域始终是Python学习中一个必须理解掌握的环节&#xff0c;下面我们从局部变量和全局变量开始全面解析Python中变量的作用域。 所谓局部变量&#xff0c;指的是定义在函数内的变量。定义在函数内的变量&#xff0c;只能在函数内使用&#xff0c;它与函数外具有相同名…

GlasgowSmile-v2靶机复盘

GlasgowSmile-v2靶机复盘 这是一个非常难的靶机 这个靶机是直接给我们ip地址的&#xff0c;所以就不用去找ip地址了&#xff0c;直接对ip进行一个扫描。 发现开通了22&#xff0c;80&#xff0c;83&#xff0c;但是8080端口是个开启我们无法访问的状态&#xff0c;所以可以猜…

【Redis】—— Redis的RDB持久化机制

&#x1f4a7; 【 R e d i s 】—— R e d i s 的 R D B 持久化机制 \color{#FF1493}{【Redis】 —— Redis的RDB持久化机制} 【Redis】——Redis的RDB持久化机制&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞…

Springboot -- Mybatis + Mybatis Generate + KingbaseES8(pgsql) + 静态多数据源

&#x1f3db;&#x1f3db;&#x1f3db; 以下内容记录一次 Springboot 项目整和人大金仓数据库的过程 &#x1f3db;&#x1f3db;&#x1f3db; 文章目录 KingBaseES8SpringBoot整合KES8(pgsql)修改pom文件配置多数据源配置文件配置类 代码生成器配置JsonTypeHandler修改配…

[HDCTF2019]Maze(初识逆向)

下载附件解压&#xff0c;为了方便&#xff0c;我将文件名改为了maze.exe 一般我们先查壳&#xff0c;确实存在UPX壳 对于刚接触逆向的我&#xff0c;一键脱掉哈哈哈 不过还是要说一下&#xff0c;这种脱壳处理有可能会产生其它损坏或者影响&#xff0c;需要进行一定的修复 可…

Visio使用

1.Visio中字母上下标快捷键&#xff1a; 选中要成为上标的文字,ctrlshift"" 选中要成为下标的文字,ctrl"" 2.导入CAD文件 从 AutoCAD 版本 2007 到 2017 导入 .dwg 或 .dxf 文件。 3.编辑CAD文件 右键图形—CAD绘图对象—转换 选择高级 将默认选项改…

居安思危,测试员被裁了还能干什么?

2019年迎来了一大波大佬级公司裁员&#xff0c;包括了阿里、美团、知乎……。它们是各行业的独角兽公司&#xff0c;既是媒体关注的焦点&#xff0c;也是代表了行业风向的指针。 2019年的互联网&#xff0c;已经过了蓬勃发展期&#xff0c;接下来要迎接的更加平稳、规律的发展…

ECM能耗管理云平台

能源是企业运营中不可或缺的要素之一&#xff0c;直接影响企业的成本和竞争力。能源消耗和碳排放不断增长&#xff0c;对环境和可持续发展造成了严重影响。越来越多的企业开始关注并实施能耗管理云平台系统&#xff0c;以实现更高的能源效率、降低碳排放。 ECM能耗管理云平台系…

数分面试题:魔方涂色

问题&#xff1a;现在有一个正方体&#xff0c;现在有6种颜色&#xff0c;给正方体的每一面涂一种颜色&#xff0c;有多少种涂色方法。 注意&#xff01;正方体是可以旋转的&#xff0c;如果旋转正方体之后&#xff0c;涂色效果和另一种涂色效果相同&#xff0c;那么算是一种涂…

车载开发月薪10k与30k的区别,就是CAN总线技术

CAN&#xff08;Controller Area Network&#xff09;总线是一种实时通信协议&#xff0c;是一种广泛应用于车载电子系统中的网络技术。CAN总线技术最初是由德国Bosch公司开发的&#xff0c;用于汽车电子控制系统&#xff08;ECU&#xff09;之间的通信&#xff0c;它能够在车辆…

Linux的shell脚本

Linux的shell脚本 &#x1f607;博主简介&#xff1a;我是一名正在攻读研究生学位的人工智能专业学生&#xff0c;我可以为计算机、人工智能相关本科生和研究生提供排忧解惑的服务。如果您有任何问题或困惑&#xff0c;欢迎随时来交流哦&#xff01;&#x1f604; ✨座右铭&…

Ai数字人浪潮来袭,超写实数字人系统出世,为企业打造定制化服务

数字人概念首次出现在80年代&#xff0c;最初在音乐领域应用&#xff0c;使用手绘技术进行生成。随着时间的推移&#xff0c;传统手绘被CG和动作捕捉等技术取代&#xff0c;从而使虚拟数字人的制作变得更加简化并降低成本。因此&#xff0c;虚拟数字人产业进入产业化探索阶段。…

SpringBoot快速实践 --Ⅰ

文章目录 启动一个SpringBoot项目如何替换内嵌容器玩转SpringBoot配置全局异常处理过滤器拦截器使用Lombok简洁代码使用IDEA HTTP Client进行接口调试 启动一个SpringBoot项目 如果你觉得使用官网来创建太慢了&#xff0c;那你直接把以前项目的依赖粘过来就行了&#xff1a; …

pytorch LBFGS

LBFGS pytorch的LBFGS也是一个优化器 但是与一般的优化器不同 平常我们的顺序是 losscriterion(predict, gt) optim.zero_grad() loss.backward() optim.step()而LBFGS是 def closure():optim.zero_grad()loss criterion(predict, gt)loss.backward()return lossoptim.step…

5.EFLK(ELK+filebeat)+filter过滤

文章目录 EFLK&#xff08;ELKfilebeat&#xff09;部署filebeat修改配置文件logstash配置 logstash的filter过滤grok(正则捕获插件)内置正则表达式调用自定义表达式 mutate(数据修改插件)重命名字段添加字段删除字段转换数据类型替换字段内容以"|"为分割符拆分数据成…

系统升级丨让VR全景制作简单再简单

最高端的VR全景 往往只需要最朴素的制作方式 酷雷曼3D VR数字化升级平台4.0版本 闪耀上线 全新的后台界面 丝滑的编辑工具 无需代码 不用建模 简单拖拉拽移 依然有手就行 轻松搭建VR元宇宙空间 1、界面升级&#xff0c;让VR创作更加可视 全新视觉设计 酷雷曼3D VR…

【必读】未来八大最具潜力行业!看懂就赚了

1 网络安全行业 现在保护“网络安全”已经成为世界各国的重要共识。有专家表示&#xff0c;未来网络安全行业有望超越金融、地产业成最赚钱行业。 2 动漫行业 我国的动漫产业才刚刚起步&#xff0c;现在全国各地如北京、上海、杭州、大连、深圳、广州等城市均建立起动漫产业…

2023年中总结:未到年末,立的Flag就已实现

前言 去年年末&#xff0c;搞了一篇年终总结&#xff0c;立了一个小小的Flag&#xff0c;2023年实现全网粉丝量突破1.5万&#xff0c;可以很负责任的告诉大家&#xff0c;截至到当前&#xff0c;不仅已经实现&#xff0c;而且超额完成&#xff0c;虽然这个量&#xff0c;很低&a…

【目标检测】基于yolov5的道路坑洼检测(附代码和数据集)

写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 路虽远,行则将至;事虽难,做则必成。只要有愚公移山的志气、滴水穿石的毅力,脚踏实地,埋头苦干,积跬步以至千里,就…

《TCP/IP网络编程》第3,4章学习记录

基础知识&#xff1a; struct sockaddr_in {sa_family_t sin_family; //地址族&#xff08;Address Family)uint16_t sin_port; //16位TCP/UDP端口号struct in_addr sin_addr; //32位IP地址char sin_zero[8]; //不使用 }sa_family_t包括&#xff1a; (1)AF_INET,IPv4网络协议…