数据结构(C语言版)概念、数据类型、线性表

数据结构(C语言)基本概念

数据的基本单位

数据的基本单位是位(bit)和字节(byte)。位是最小的存储单位,它可以表示一个二进制的0或1。字节由8个位组成,用于表示一个字符或数字。在计算机中,常用的数据单位还有千字节(KB)、兆字节(MB)、吉字节(GB)等,它们分别是1024字节、1024千字节和1024兆字节。

数据相关定义 

数据(data):所有能输入到计算机中的符号,包含 数值型数据与非数值数据(文本,字符,文件等)
数据元素(data element): 数据的基本单位,也称节点(node)或记录(record)
数据项(data item): 有独立含义的数据最小单位,也称为域 (feild)
数据对象(data object):相同特性的数据元素的集合
数据结构(data structure): 相互之间存在一种或者多种关系的数据元素的集合
 

数据的逻辑结构 

数据的逻辑结构指的是数据元素之间的关系,它描述了数据元素之间的逻辑关联和组织方式。常见的数据逻辑结构有以下几种:

1. 线性结构:数据元素之间存在一对一的关系,即每个数据元素只有一个直接前驱和一个直接后继,形成线性序列。常见的线性结构有线性表、栈、队列等。

2. 非线性结构:数据元素之间存在一对多或多对多的关系,即一个数据元素可能有多个直接前驱或直接后继。常见的非线性结构有树、图等。

3. 集合结构:数据元素之间没有任何特定的顺序关系,每个元素都是平等的,且各个元素之间相互独立。常见的集合结构有集合、哈希表等。

4. 顺序结构:数据元素之间存在一种顺序关系,即数据元素的排列顺序是固定的。常见的顺序结构有数组、链表等。

5. 嵌套结构:数据元素可以包含其他数据元素,形成层次关系或者复杂的结构。常见的嵌套结构有树、图等。

四种基本结构:

(1)集合:结构中的数据元素之间除了“同属一个集合”的关系之外,别无其他关系;
(2)线性结构:结构中的数据元素之间存在一个对一个的关系;
(3)树形结构:结构中的数据元素之间存在一个对多个的关系;
(4)图状结构或网状结构:结构中的数据元素之间存在多个对多个的关系。

这些逻辑结构在实际应用中可以灵活组合和应用,以满足不同的数据处理需求。

数据的存储结构 

数据的存储结构是指在计算机系统中,用于存储和组织数据的方式。常见的数据存储结构有以下几种:

1. 数组(Array):是一种线性结构,将相同类型的数据按顺序存储在连续的内存空间中。可以通过索引值快速访问数组中的元素。

2. 链表(Linked List):也是一种线性结构,但元素不一定连续存储。每个元素包含数据和指向下一个元素的指针,通过指针可以进行遍历和访问。

3. 栈(Stack):是一种特殊的线性结构,采用后进先出(LIFO)的原则。只能在栈顶进行插入和删除操作,类似于一摞盘子。

4. 队列(Queue):也是一种线性结构,采用先进先出(FIFO)的原则。只能在队尾插入元素,在队首删除元素,类似于排队等候。

5. 树(Tree):是一种非线性结构,由节点和边组成。每个节点可以有多个子节点,形成层次关系。常见的树结构包括二叉树、二叉搜索树等。

6. 图(Graph):也是一种非线性结构,由节点和边组成。节点之间的关系可以是任意的,常用于表示网络、社交关系等复杂结构。

7. 散列表(Hash Table):使用散列函数将数据映射到固定大小的数组中,可以快速进行插入、查找和删除操作。适用于需要快速查找的场景。

以上仅是常见的数据存储结构,实际应用中还可能会使用其他更复杂的数据结构来满足特定需求。

按值的不同特性,高级语言中数据类型 

高级语言中的数据类型可以根据其特性分为几个不同的类型,包括:

1. 基本数据类型:这些类型包括整数、浮点数、字符和布尔值。基本数据类型在内存中占用固定的空间,并具有特定的取值范围和操作规则。

2. 组合数据类型:这些类型包括数组、结构体和枚举。数组是一组相同类型的元素的集合,结构体是一组不同类型的数据成员的集合,而枚举是一组离散的命名常量。

3. 引用数据类型:这些类型包括指针和引用。指针是存储内存地址的变量,可以用于间接访问其他变量或数据结构。引用是一个已存在变量的别名,通过引用可以直接访问原始变量。

4. 抽象数据类型:这些类型包括类、接口和模块。类是一种封装了数据和相关操作的用户定义类型,接口定义了一组行为规范,而模块是一组相关功能的集合。

每种数据类型在编程中都有其特定的用途和限制,开发人员可以根据实际需求选择合适的数据类型来存储和操作数据。

算法与算法分析 

算法的特性:

  • 输入: 0个或多个输入
  • 输出: 有一个或者多个输出
  • 确定性: 每步都是确定的,无歧义
  • 有穷性: 算法应该在有穷步后结束
  • 可行性:每一条运算都是能够执行的

设计算法的要求:

  1. 正确性
  2. 可读性
  3. 健壮性
  4. 高效性(时间代价与空间代价)

 

 

 

 

 

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

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

相关文章

ElasticSearch第二讲:ES详解 - ElasticSearch基础概念

ElasticSearch第二讲:ES详解 - ElasticSearch基础概念 在学习ElasticSearch之前,先简单了解下ES流行度,使用背景,以及相关概念等。本文是ElasticSearch第二讲,ElasticSearch的基础概念。 文章目录 ElasticSearch第二讲…

将PyCharm中的终端运行前面的PS修改成当前环境

最近使用Pycharm中的Terminal来pip安装一些pakage,发现Terminal运行前面的显示的是PS,然后输入安装指令报错。“python无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。” 解决方法: 只需要在pycharm的设置中修改一些termi…

01JVM_内存结构

一、什么是JVM 1.JVM的定义 Java程序的运行环境,java二进制字节码的运行环境 2.JVM的好处 ①一次编写,到处运行 ②自动内存管理,垃圾回收功能 ③数组下标越界检查 ④多态 3.jvm,jre,jdk的比较 3.常见的JVM 主…

Redis限流实践:实现用户消息推送每天最多通知2次的功能

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师…

java从入门到起飞(八)——循环和递归

文章目录 Java循环1. 什么是循环?1.1 为什么需要循环?1.2 循环的分类 2. Java中的循环结构2.1 for循环2.2 while循环2.3 do-while循环 3. 循环控制语句3.1 break语句3.2 continue语句 4. 总结 Java递归1. 什么是递归2. 递归的原理3. 递归的实现4. 递归的…

更换 yum 阿里源 - 手把手教你怎么配置,在也不需要求别人了 - 看懂一个就相当于看懂了其他的linux系统

更换阿里源 我的是centos8 当然 centos7 也可以换 后面有更详细的怎么配 ,再也不用求别人怎么弄了 最直接的方式 直接复制 执行 centos7 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo或者 wget -O /etc/yum.repos.…

基于SpringBoot + Vue的项目整合WebSocket的入门教程

1、WebSocket简介 WebSocket是一种网络通信协议,可以在单个TCP连接上进行全双工通信。它于2011年被IETF定为标准RFC 6455,并由RFC7936进行补充规范。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性…

酷雷曼第二期无人机技能培训圆满举办

第2期无人机技能培训 2023年8月24日-8月25日,第二期酷雷曼无人机技能培训及执照考试在北京圆满举办,来自五湖四海、全国各地的合作商千里相聚,培训现场热闹融洽,再续精彩盛况。 随着《无人驾驶航空器飞行管理暂行条例》正式发布…

性能测试 —— Jmeter 命令行详细

我们在启动Jmeter时 会看见:Don’t use GUI mode for load testing !, only for Test creation and Test debugging.For load testing, use CLI Mode (was NON GUI) 这句话的意思就是说,不要使用gui模式进行负载测试,gui模式仅仅是创建脚本…

Mysql JSON

select json_extract(c2, $.a) select c2->"$.a" // json_extract的语法糖 (取出的值会保留"双引号" so不适合实战) 注:mysql若是引擎Mariadb则不支持json操作符->>语法糖 select c2->…

扫地僧静态养站王站群:搜狗SEO站群收录养站效果

扫地僧静态养站王站群:Sogou搜狗SEO出站及收录效果,扫地僧静态站群采用了静态生成式的方式,只需要一个后台管理系统即可管理多个网站,大大提高了建站效率。建站大概45天左右,收录率百分之三十至百分之五十左右 如果对购买的域名进行把控&…

游戏思考30(补充版):关于逆水寒铁牢关副本、白石副本和技能的一些注释(2023/0902)

前期介绍 我是一名逆水寒的玩家,做一些游戏的笔记当作攻略记录下来,荣光不朽-帝霸来源视频连接 传送门 一、旧版铁牢关(非逆水寒老兵服) (1)老一:巨鹰 1)机制一:三阵风…

ubuntu20.04 Supervisor 开机自启动脚本一文配置

前言: 最近发现一种非常好的开机启动服务方式,不光可以开机自启动,而且还可以进行开机节点的进程守护,这样大大确保了线程的稳定情况,这种服务甚至可以守护开机的进程,所以比之前设置 rc.local 开机自启动脚本一文配置节点好出很多,它甚至可以使用网页登录监管我开机自启…

手写RPC框架--4.服务注册

RPC框架-Gitee代码(麻烦点个Starred, 支持一下吧) RPC框架-GitHub代码(麻烦点个Starred, 支持一下吧) 服务注册 服务注册a.添加服务节点和主机节点b.抽象注册中心c.本地服务列表 服务注册 a.添加服务节点和主机节点 主要完成服务注册和发现的功能,其具体流程如下&…

【Springcloud】elk分布式日志

【Springcloud】elk分布式日志 【一】基本介绍【二】Elasticsearch【1】简介【2】下载【3】安装【4】启动 【三】Logstash【1】简介【2】下载【3】安装【4】启动 【四】Kibana【1】简介【2】下载【3】安装【4】启动 【五】切换中文【六】日志收集 【一】基本介绍 (…

【测试开发】Mq消息重复如何测试?

本篇文章主要讲述重复消费的原因,以及如何去测试这个场景,最后也会告诉大家,目前互联网项目关于如何避免重复消费的解决方案。 Mq为什么会有重复消费的问题? Mq 常见的缺点之一就是消息重复消费问题,产生这种问题的原因是什么呢…

VMware 安装 黑群晖7.1.1-42962 DS918+

本例的用的文件 1、ARPL 1.0beat 引导文件 vmdk格式: https://download.csdn.net/download/mshxuyi/88309308 2、DS918_42962.pat:https://download.csdn.net/download/mshxuyi/88309383 一、引导文件 1、创建一个虚拟机 2、下一步,选稍后…

Linux图形栈入门概念

Mesa在图形栈中的位置 游戏引擎: 游戏引擎指的是一种软件框架,通过编程和各种工具,帮助开发者设计、构建和运行视频游戏。它相当于一个虚拟的世界创造工具,提供了各种功能模块和资源,如渲染引擎、物理引擎(碰撞检测、重…

HTTP代理只能代理HTTP协议吗?

HTTP代理是一种代理服务器,它可以充当客户端和服务器之间的中介,以帮助客户端访问服务器上的资源。但是,HTTP代理并不仅仅只能代理HTTP协议。 HTTP代理可以代理的协议 除了HTTP协议之外,HTTP代理还可以代理其他协议,例…

Apache实现weblogic集群配置

安装apache,安装相对稳定的版本。如果安装后测试能否正常启动,可以通过访问http://localhost/进行测试。安装Weblogic,参见文档将bea安装目录 weblogic81/server/bin 下的 mod_wl_20.so 文件copy到 apache安装目录下Apache2/modules/目录下A…