4-数据结构

news2024/12/23 9:40:16

数据结构(data structure

1. 简介
数据结构是在计算机中组织与存储数据的方式
如果想要表示“一排数字”,自然想到使用「数组」数据结构
数组的存储方式可以表示数字的相邻关系、顺序关系,但至于其中存储的是整数int,还是小数float, 或是字符char,则与所谓的数据的结构无关了
换言之,基本数据类型提供了数据的“内容类型”,而数据结构提供数据的“组织方式”
 


2.分类
数据结构主要可根据「逻辑结构」和「物理结构」两种角度进行分类
 


3.逻辑结构
「逻辑结构」反映了数据之间的逻辑关系。

//这里的逻辑关系指数据间的前后间关系,与数据在计算机中的存储位置无关。


一般将逻辑结构分为「线性」和「非线性」两种:

①线性数据结构:数组、队列、栈、链表、哈希表;

②非线性数据结构:(多维数组)、堆、树结构、图结构、哈希表;


 


4.物理结构
「物理结构(或存储结构)」反映了数据在计算机内存中的存储方式


从本质上看,分别是数组的连续空间存储和链表的离散空间存储

常用的物理结构(或存储结构)有:

①顺序结构(连续结构):在内存中用一组地址连续的存储单元依次存储线性表的各个数据元素。

②链式结构:在内存中的存储元素不一定是连续的,用任意地址的存储单元存储元素,元素节点存放数据元素以及通过指针指向相邻元素的地址信息。

③索引结构:除建立存储结点信息外,还需建立一张索引表(作用:标识节点的地址)。

//索引表由若干索引项组成。

④Hash结构(又称杂凑结构或散列结构):由节点的关键码值决定节点的存储地址。

所有数据结构都是基于数组、或链表、或两者组合实现的
例如栈和队列,既可以使用数组实现、也可以使用链表实现
而例如哈希表,其实现同时包含了数组和链表
●基于数组可实现:栈、队列、哈希表、树、堆、图、矩阵、张量(维度≥3的数组)等;
●基于链表可实现:栈、队列、哈希表、树、堆、图等;
基于数组实现的数据结构也被称为「静态数据结构」,这意味着该数据结构在在被初始化后,长度不可变
相反地,基于链表实现的数据结构被称为「动态数据结构」,该数据结构在被初始化后,我们也可以在程序运行中修改其长度

5.常见的几个数据结构

①数组(Array)

②队列(Queue)

----FIFO 即先进先出,相当于排队

③栈(Stack)

----FILO 即先进后出、后进先出,相当于坐电梯

例题1--说明栈的应用:hdu 1062“Text Reverse”(C++)

题目链接:Problem - 1062

Text Reverse

Problem Description

Ignatius likes to write words in reverse way. Given a single line of text which is written by Ignatius, you should reverse all the words and then output them.

Input

The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.
Each test case contains a single line with several words. There will be at most 1000 characters in a line.

Output

For each test case, you should output the text which is processed.

Sample Input

3 
olleh !dlrow 
m'I morf .udh 
I ekil .mca

Sample Output

hello world! 
I'm from hdu. 
I like acm.

Hint
Remember to use getchar() to read '\n' after the interger T, then you may use gets() to read a line and process it.

Author

Ignatius.L

题意:翻转字符串。

/*hdu 1062“Text Reverse” C++*/
#include<bits/stdc++.h>    
using namespace std;
int main(){
	int n;
	char ch;
	scanf("%d",&n);
	getchar();
	while(n--){
		stack<char> s;
		while(true){
			ch=getchar();//一次读入一个字符 
			if(ch==' '||ch=='\n'||ch==EOF){//如果这个单词或语句已结束 
				while(!s.empty()){//判断栈顶不为空 ,输出这个反文 		
					printf("%c",s.top());//输出栈顶 
					s.pop();//清除栈顶 
				}
				if(ch=='\n'||ch==EOF) break;//如果换行或结束就输出换行(跳出执行26行) 
				printf(" ");//不是就输出空格隔开单词 
			}
			else s.push(ch);//若没结束,入栈 
		}
		printf("\n");
	}
	return 0;
}

④链表(Linked List)

⑤树(Tree)

⑥哈希表(Hash)

⑦堆(Heap)

⑧图(Graph)

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

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

相关文章

【数据结构:线性表】顺序表

⚡线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条直…

网络请求实战-RESTFUL约定和Postman工具

RESTFUL协议 表现层状态转化&#xff08;Representational state transfer&#xff09; 资源、表示和转换 资源&#xff08;Resource&#xff09; 服务端的一个资源 拥有URL 表示&#xff08;Representation&#xff09; 服务端的资源在客户端的表示 客户端拥有操作服务…

three.js之scene

THREE.Scene对象有时被称为场景图&#xff0c;可以用来保存所有图形场景的必要信息。在Three.js中&#xff0c;这意味着THREE.Scene保存所有对象、光源和渲染所需的其他对象。 本节主要是构建一个基本场景&#xff0c;然后可以通过gui添加&#xff0c;删除场景里的对象等。 效果…

lua变量、数据类型、if判断条件和数据结构table以及【lua 函数】

一、lua变量【 全局变量和局部变量和表中的域】 Lua 变量有三种类型&#xff1a;全局变量和局部变量和表中的域。 ▪ 全局变量&#xff1a;默认情况下&#xff0c;Lua中所有的变量都是全局变量。 ▪ 局部变量&#xff1a;使用local 显式声明在函数内的变量&#xff0c;以及函数…

Golang每日一练(leetDay0040)

目录 118. 杨辉三角 Pascals Triangle &#x1f31f; 119. 杨辉三角 II Pascals Triangle II &#x1f31f; 120. 三角形最小路径和 Triangle &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/…

港联证券策略:A股市场短期预计将保持区间震荡

港联证券以为&#xff0c;跟着4月30日的接近&#xff0c;一切板块的年报以及一季度报将进入密布发表期。从历史数据来看&#xff0c;4月中旬今后指数震动调整的概率较大&#xff0c;在操作上需注意操控全体仓位。从板块方面看&#xff0c;近期为数字经济和中特估双主线驱动的行…

Adobe lr中文版下载官方版 专业摄影师的必备软件 附各个平台

说到修图软件&#xff0c;大家第一时间一定都能联想到Adobe旗下的Photoshop&#xff08;Adobe Photoshop CC&#xff09;和Lightroom&#xff08;Adobe Photoshop Lightroom CC&#xff09;&#xff0c;其中PhotoShop很多设计师都找到了对应的手机版&#xff0c;但有些用户由于…

MacOS 上安装并配置 OpenJDK 图文详细版

1、概述 1.1、什么是 OpenJDK &#xff1f; OpenJDK 是 Java 的一个开源实现&#xff0c;由 Sun Microsystems 于2006年开始发布&#xff0c;是 Java SE 平台&#xff08;Java Standard Edition&#xff09;的参考实现之一。OpenJDK 是由 GPL v2 授权下的自由软件&#xff0c…

Msray-Plus采集工具帮您快速获取数据,让您的市场营销更加精细

随着互联网的不断发展&#xff0c;数据已经成为企业竞争的重要资产之一。市场营销人员需要通过数据来了解客户需求、市场趋势和竞争对手情况&#xff0c;从而制定更加精细的市场营销策略。然而&#xff0c;采集数据并不是一件容易的事情&#xff0c;需要耗费大量的时间和精力。…

Java多线程基础学习(一)

1. 创建线程 1.1 通过构造函数&#xff1a;public Thread(Runnable target, String name){} 或&#xff1a;public Thread(Runnable target){} 示例: Thread thread1 new Thread(new MyThread(), "mythread"); class MyThread extends Thread(){public void …

天阳转债上市价格预测

天阳转债 基本信息 转债名称&#xff1a;天阳转债&#xff0c;评级&#xff1a;AA-&#xff0c;发行规模&#xff1a;9.75亿元。 正股名称&#xff1a;天阳科技&#xff0c;今日收盘价&#xff1a;15.68元&#xff0c;转股价格&#xff1a;14.92元。 当前转股价值 转债面值 / …

RHCE---服务+ansible

一、命令提示符颜色 也可以写入配置文件/etc/profile [rootmaster ~]# vim .bashrc 绿色&#xff1a; PS1\[\033[01;32m\]\u\H:\[\033[01;34m\]\w\$\[\033[00m\] 粉红色&#xff1a; PS1\[\e[1;35m\]\u\h:\[\e[0m\]\[\e[1;33m\]\w\[\e[1;35m\]\[\e[0m\]\[\e[1;34m\]\$ \[\e[0…

[架构之路-168]-《软考-系统分析师》-4-据通信与计算机网络-4/5- 常见网络设备与网络工程

目录 4 . 4 网络互连与常用设备 1 . 网络互连设备 2 . 交换技术 3 . 路由技术 4 . 5 网络工程 4.5.1 网络规划&#xff08;要做什么&#xff1f;打算怎么做&#xff1f; 什么时间做&#xff1f;&#xff09; 1 . 网络需求分析 2 . 可行性研究 3 . 对现有网络的分析与描…

【Dom获取属性操作】JavaScript 全栈体系(十)

Web APIs 第四章 操作元素属性 一、操作元素常用属性 还可以通过 JS 设置/修改标签元素属性&#xff0c;比如通过 src更换 图片最常见的属性比如&#xff1a; href、title、src 等语法&#xff1a; 对象.属性 值 <!DOCTYPE html> <html lang"en">&…

【c#串口通信(4)】串口调试助手的使用

前言: 关于本文中使用到的串口助手工具,订阅专栏后,加入vip群,即可在群文件免费下载 1、打开串口 1.1 选择端口号 在下图的箭头所指处,选择下拉框中你想打开的串口,因为我之前使用虚拟串口工具虚拟了COM1、COM3,所以我可以先选择COM2 1.2 设置好参数 1.2.1 波特率:…

Python数据结构与算法篇(九)--单调栈与单调队列

1 单调栈 1.1 介绍 栈&#xff08;stack&#xff09;是很简单的一种数据结构&#xff0c;先进后出的逻辑顺序&#xff0c;符合某些问题的特点&#xff0c;比如说函数调用栈。 单调栈实际上就是栈&#xff0c;只是利用了一些巧妙的逻辑&#xff0c;使得每次新元素入栈后&#x…

rhcse中配置DNS的正反向解析

实验一 正向解析 服务端ip 192.168.9.30 客户端ip 192.168.9.31 网址 www.openlab.com 安装DNS软件 服务端 [rootlocalhost ~]# yum install bind -y 客户端与服务端相同 编辑DNS主配置文件 修改其中的11和19行 listen-on port 53 { any; }; allow-query { a…

homeassistant配置MQTT集成以及传感器实体(STM32连接进入homeassistant)

大家可以看作者的小破站教学视频&#xff08;如果喜欢的话可以点个关注&#xff0c;给个三联&#xff01;啊哈哈哈哈哈哈&#xff09;&#xff1a; 【homeassistant配置MQTT集成以及传感器实体&#xff08;STM32连接进入homeassistant&#xff09;】 最近homeassistan更新之后…

Python VTK计算曲面的高斯曲率和平均曲率

introduction&#xff1a; Python VTK计算曲面的高斯曲率和平均曲率&#xff0c;如何使用户Python版本的VTK计算曲面的高斯曲率并映射在曲面上。使用了两个不同的表面&#xff0c;每个表面根据其高斯曲率和平均曲率着色. Display: Step: 本文介绍了 如何使用户Python版本的V…

什么是软件开发脚手架?为什么需要脚手架?常用的脚手架有哪些?

什么是软件开发脚手架&#xff1f;为什么需要脚手架&#xff1f;常用的脚手架有哪些&#xff1f; 微服务本身是一种架构风格&#xff0c;也是指导组织构建软件的一系列最佳实践集合。然而&#xff0c;业务团队在拆分应用后&#xff0c;会产生更多细粒度服务&#xff0c;并面临…