数据结构(1)—— 数据结构的三大结构

【编译原理】龙书第三章作业答案 【编译原理】龙书第三章作业答案 练习3.1.1:根据3.1.2节中的讨论,将下面的C++程序划分成正确的词素序列。哪些词素应该有相关联的词法值?应该具有什么值? 答案: 左列为词素,右列为值,划分如下: < float> 值为它本身 <id,limitedSquare> 值为*limitedSquare指针 <(> 标点符号无值 ... 阅读详情

计算机程序设计 = 数据结构 + 算法
数据结构研究变量的管理方式,算法研究解决特定问题的方法。
数据结构分三个层次:逻辑结构(抽象层)、物理结构(结构层)、运算结构(实现层)。

1.1 数据结构的逻辑结构

逻辑结构指人对数据之间关系的理解和看法,逻辑结构和计算机无关。
逻辑结构:
1、集合结构:这种结构表示数据可以合并成一个整体。
  这是数据之间关系最弱的一种,就仅比那个一点关系都没有的强一点。
2、线性结构:这种结构中数据之间有一对一的关系(如排队)。
3、树型结构:这种结构中数据之间有一对多的关系,这个关系称为父子关系(典型的如细胞分裂)。
4、网状结构:这种结构中数据之间有多对多的交叉映射关系。

(我们主要研究线性结构和树型结构。)

1.2 数据结构的物理结构

物理结构描述计算机内部数据之间实际的关系。
物理结构:
1、顺序结构:结构中的数据元素存放在一段连续的内存空间中,典型代表就是数组。随机访问方便,插入删除复杂。
2、链式结构:这种结构中不同的数据被存储在计算机里不同的地方,他们的物理位置之间完全没有关系。链式结构由多个节点构成,每个节点中包括有效数据和至少一个指针变量。
对链式结构进行操作时,如果不会修改结构则使用一级指针变量就可以了,如果会修改结构则需要使用二级指针变量,其实,一级指针变量也可以修改链式结构。
链式结构适合进行插入删除操作,不适合进行随机访问。

/*链式结构练习*/
#include <stdio.h>

typedef struct node{
    int num;
    struct node *p_next;//void *p_next;
}node;
node node1 = {1,NULL};

int main(){
    node *p_head = NULL;//头指针
    node node2 = {2,NULL};
    static node node3 = {3,NULL};
    node node5 = {5,NULL};//新添一个节点,把它加入链表中

    p_head = &node1;
    node1.p_next = &node2;
    node2.p_next = &node3;
    //用二级指针把新增节点5挂上去
    /*node **pp_tmp = &p_head;
    while (*pp_tmp){
        pp_tmp = &((*pp_tmp)->p_next);
    }
    *pp_tmp = &node5;*/

    //第二种把新增节点5加进去的方法
    node *p_tmp = NULL;
    if (p_head){
        p_tmp = p_head;
        while (p_tmp->p_next){
            p_tmp = p_tmp->p_next;
        }
        p_tmp->p_next = &node5;
    }
    else {
        p_head = &node5;
    }
   //显示所有节点数据
    p_tmp = p_head;
    while (p_tmp){
        printf("%-3d",p_tmp->num);
        p_tmp = p_tmp->p_next;
    }
    printf("\n");
    return 0;
}

逻辑结构可以采用多种物理结构实现,它们之间没有明确的一对一的关系。

1.3 数据结构的运算结构

数据结构的基本操作(运算结构):
1、创建/销毁
  分配资源、建立结构、释放资源
2、插入/删除
  增加、减少数据元素
3、获取/修改
  遍历、迭代、随机访问
(增删改查)
4、排序/查找
  算法应用

已解决-Parallels Desktop 16 网络初始化失败:您的虚拟机将继续正常运作,但将无法连接网络 我是月球挖掘机,相信不少打工人为了尝鲜已经更新了MacOS 11 Big Sur,当然,苹果每次的系统大更新,都会给我们软件的功能无法使用惊喜,这次的也不例外。 这个问题是我在更新macOS Big Sur之后,Parallels Desktop打开虚拟机后,提示: 报错信息 网络初始化失败:您的虚拟机将继续正常运作,但将无法连接网络 这是我的软件版本: 起初我以为是我的虚拟机坏了,结果重装了一遍虚拟机,没有任何用处。我开始在网上找方法,只能找到那个使用命令行打开软件的命令,除此之外没有了 阅读详情

相关推荐

zabbix深度监控之邮件告警、微信群和微信告警

本文详细介绍了Zabbix监控系统实现邮件告警和微信告警的配置方法。邮件告警部分包含QQ和163邮箱的SMTP服务器配置、消息模板设置、告警流程三步骤(媒介配置、触发器动作、用户设置)。微信告警分为两种方式:企业微信群机器人告警(通过webhook实现)和企业微信应用告警(需创建应用并获取API参数)。两种告警方式都提供了完整的配置流程,包括脚本编写、权限设置、消息模板定制等关键步骤,并特别说明了如何使个人微信接收企业微信告警消息。文章还对比了SMTP、POP3、IMAP三种邮件协议的差异及适用场景。

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 765

数据结构

数据结构 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。 数据:所有能被输入到计算机中,且能被计算机处理的符号的集合。是计算机操作的对象的总称。 数据元素:数据(集合)中的一个“个体”,数据及结构中讨论的基本单位 数据项:数据的不可分割的最小单位。一

xfyangle的博客 1万+

读懂 SAP S/4HANA 里的 SAP Fiori 架构:前端服务器、搜索链路、传统应用接入与内容组织全景解析

摘要:SAP Fiori架构并非简单的系统连接图,而是明确区分界面层与业务数据层的三层分工体系:用户交互层(浏览器与Fiori launchpad)、前端技术层(SAPUI5运行环境)和业务数据层(SAP S/4HANA后端)。这种分离实现了生命周期解耦,前端专注于统一体验治理,后端处理核心业务逻辑。值得注意的是,SAP Fiori front-end server本质仍是ABAP系统,负责UI技术组件运行。虽然SAP S/4HANA推荐嵌入式部署,但独立部署在多系统场景中仍有价值。典型Fiori应用通过O

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 156

三种最常用的数据结构 - 线性表 、树 、堆

三种最常用的数据结构、线性表(顺序表、链表、栈和队列)、树、堆

Fearless____的博客 1094

数据结构1数据结构三要素

目录 1、数据的逻辑结构 2、数据的存储结构 2.1、顺序存储 2.2、链式存储 2.3、索引存储 2.4、散列存储 3、数据的运算 1、数据的逻辑结构 逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。它与数据的存储无关,是独立于计算机的。 数据的逻辑结构分为线性结构和非线性结构 线性结构:单链表、双链表、堆栈 非线性结构:集合、树、图 2、数据的存储结构 存储结构是指数据在计算机中的表示,也称为物理结构。 存储结构包括数据元素表示和关系的表示。 数据的存储.

李白 6713

大数据常用的算法与数据结构

1 布隆过滤器(Bloom Filter) Bloom Filter(简称BF),是二进制向量数据结构,常被用来检测某个元素是否是巨量数据集合中的成员 优点 具有很好的空间和时间效率,尤其是空间效率极高:因为不需要存储集合数据本身内容 不会漏判(False Negative) 缺点: 查询某个成员是否属于集合时,会发生误判(False Positive):即如果某个成员不在集合中,有可能BF会得出其在集合中的结论: 因此只能适用于允许一定误判率的情况 1.1 基本原理 BF可以高效地表征集合数据:使用长

qq_48238787的博客 2635

常见的数据结构(顺序表、链表、栈和队列、二叉树)

目录逻辑结构分类存储结构分类线性表线性表的顺序存储线性表的链式存储栈和队列栈队列 逻辑结构分类 线性结构 对于数据结构而言,线性结构是n个数据元素的有序集合。 集合中必存在唯一的一个“第一个元素”; 集合中必存在唯一的一个“最后的元素”; 除最后元素之外,其他数据元素均有唯一的“后继”; 除第一个元素之外,其他数据元素均有唯一的“前驱”。 树形结构(层次结构) 树形结构指的是数据元素之间...

xiecheng1995的博客 3071

C语言/数据结构数组题解:寻找数组中第三大的不同数字——O(n)时间O(1)空间

摘要:本文介绍了一个寻找分数列表中第三大分数的算法。算法通过维护三个变量(first、second、third)来跟踪最大值,跳过重复值,并在遍历结束后检查是否存在足够的唯一值。若不同分数少于3个,则返回最大值。测试样例验证了算法的正确性,如输入[5,2,8,8,3,5,1]输出3,[10,10,10]输出10,[1,2,...,10]输出8。该算法时间复杂度为O(n),空间复杂度为O(1)

深耕计算机专业知识与技术。 234

学习数据结构的手册1---五十万字总结阅读数据结构(用c语言描述+包含三大主流教材+考研工作均可+正在更新)

数据结构是计算机科学中的一门基础课程,主要研究数据的存储、组织和访问方式,是编写高效算法和程序的必要基础。常见的数据结构包括线性表、栈、队列、树、图等。在实际开发中,选择合适的数据结构可以提高程序的执行效率和空间利用率,减少资源开销。本文结合数据结构三大主流的教材以及课本例题、一些数据结构考研真题,同时在总结的同时学习了来自中国大学生MOOC平台上来自西北大学耿国华教授团队的数据结构精品课程以及B站哔哩大学计算机学院比特就业课航哥的数据结构零基础教程数据结构与算法,同时也对考研机构在B站上分享的数据结构的课

华数云图小分队的博客 2140

Python数据结构与算法—第三大节课—第3-1课时:链表的提出——day62

Python数据结构与算法:第3-1课时:链表的提出 链表 除顺序表外,还有一种结构, 链表 链表可以实现,增加一个元素,其余的元素所有信息完全不用变。 来一个数据,链表就申请一个空间来存储新的元素。 比如一个链表 li: 元素与元素之间又关联,可以通过元素之间相互找到。 为什么需要链表 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来并不是很灵活。 链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。 链表的定义 链表(Linke

asd1103810477的博客 182

数据结构的内容

数据结构的内容1.逻辑结构2.存储结构3.运算集合 1.逻辑结构 数据元素之间逻辑关系的描述。 通常由四类基本结构: 集合结构 线性结构 树状结构 图状结构或网状结构 2.存储结构 逻辑结构在计算机中的存储映像。包括数据元素映像与关系映像 3.运算集合 数据结构总结:按某种逻辑关系组织一批数据,按一定的映像方式将这些数据存放在计算机存储器中,在这些数据上定义一个运算集合 ...

beenortwz的博客 161

219. 存在重复元素 II;414. 第三大的数;509. 斐波那契数;485. 最大连续1的个数;532. K-diff Pairs in an Array

219. 存在重复元素 II

weixin_42493873的博客 176

LeetCode刷题笔记【数组】

leetcode

qq_47039902的博客 906

Java 集合面试题从数据结构到 HashMap 源码剖析详解及常见考点梳理

摘要 Java集合框架是开发中的核心知识,本文从基础概念到源码层面进行了系统解析。首先介绍了Collection和Map两大接口体系,对比了ArrayList、LinkedList、HashSet等实现类的特点。重点剖析了HashMap的底层数据结构演变:JDK1.7采用数组+链表结构,而JDK1.8优化为数组+链表+红黑树组合,有效提升了查询性能。详细解读了HashMap的关键源码实现,包括哈希计算、扩容机制等核心流程。最后通过订单管理系统的实际案例,展示了HashMap的高效应用场景。全文既有理论深度,

sss191s的博客 1017

MP3文件结构1

概述:整个MP3文件大体分为三部分:TAG_V2(ID3V2),音频数据帧(Frame),TAG_V1(ID3V1); 结构 描述 ID3V2 包含了作者,作曲,专辑等信息,长度不固定,扩展了ID3V1的信息量。 Frame 一系列的帧,个数由文件大小和帧长决定;每个FRAME的长度可能不固定,也可能固定,由位率bitrate决定;每个FRAME又分为帧头和数据实体两部分;帧头

懒人在行动 799

使用Cosmos-Reason1-7B优化数据结构设计与实现

本文介绍了如何在星图GPU平台自动化部署Cosmos-Reason1-7B推理交互工具,用于优化数据结构设计与实现。该镜像能智能推荐高效数据结构方案,例如在电商推荐系统中优化用户-商品关系存储,显著降低内存占用并提升查询性能,助力开发高性能计算与数据处理应用。

weixin_30299319的博客 88

数据库的三大范式

考虑一个包含学生信息的数据库表格,其中包含以下列:学生ID、姓名、课程和成绩。如果一个学生在同一门课程上取得了多个成绩,并将成绩存储在一个单一字段中(如用逗号分隔的成绩列表),那么该表格就不符合第一范式。考虑一个订单数据库表格,其中包含以下列:订单号、产品ID、产品名称、产品类别、单价和数量。考虑一个学生选课数据库表格,其中包含以下列:学生ID、课程ID、学生姓名、课程名称、教师姓名和教师办公室地址。通过这样的拆分,每个表格中的数据都是原子的,避免了数据冗余,并消除了传递依赖,使得数据库结构更加规范化。

weixin_45274425的博客 81

算法与数据结构()-导学

1.如何有效学习算法与数据结构? 算法与数据结构并不是要你记忆背诵,而是理解与训练。如果我们想要精通一个领域,我们按照以下三个步骤: Chunk it up(切碎知识点):把一个大的知识体系切碎成相应的知识点,这一点大部分的书籍都已经帮我们做好了。 Deliberate practicing(刻意练习):这一点是我们需要去下功夫的地方,需要把每一块的知识点拿出来刻意反复练习,比如说游戏中反复...

小小何先生的学习之旅 489

PowerPaint-V1 Gradio数据结构优化实战:提升图像处理效率

本文介绍了如何在星图GPU平台上一键自动化部署🎨 PowerPaint-V1 Gradio镜像,实现高效的图像处理与编辑。该镜像通过优化数据结构显著提升处理效率,特别适用于图片修复、对象移除和创意绘制等场景,帮助用户快速完成高质量的图像生成与编辑任务。

weixin_42611177的博客 274

数据结构三要素、时间复杂度计算详解

本文系统介绍了数据结构与算法的基本概念。数据结构研究如何高效组织和处理数据,包含逻辑结构(集合、线性、树形、图状)和存储结构(顺序、链式、索引、散列)。算法是对问题求解步骤的描述,具有有穷性、确定性等特性。重点分析了时间复杂度和空间复杂度的评估方法:时间复杂度关注执行时间随问题规模n的变化,采用加法规则和乘法规则计算;空间复杂度考察内存使用与n的关系,特别讨论了递归算法的空间开销。通过实例演示了复杂度计算过程,强调算法效率评估对程序优化的重要性。数据结构与算法共同构成计算机程序的基础,是解决实际问题的关键工

m0_71676523的博客 762

数据结构:单向链表,顺序栈和链式栈

本文对比分析了三种线性数据结构:单向链表、顺序栈和链式栈。单向链表支持灵活插入删除但仅能顺序访问;顺序栈基于数组实现,具有高效随机访问特性但容量受限;链式栈结合链表动态性与栈操作限制,提供两种实现模式(单结构体头节点法和双结构体封装法),分别侧重简洁性和扩展性。三者各具特点:单向链表灵活性高,顺序栈访问效率优,链式栈动态扩展强。实际应用中需根据具体需求(如性能、内存、扩展性等)选择合适结构,理解其本质差异对系统设计至关重要。

m0_53299663的博客 1254

数据结构第一章复习:基本概念与算法复杂度分析

数据结构第一章是整本书的基础框架,核心概念包括数据、数据元素、数据项、数据对象、数据类型和数据结构数据结构三要素为逻辑结构(集合、线性、树形、图状)、存储结构(顺序、链式、索引、散列)和运算操作。算法需具备有穷性、确定性等特性,评价标准包括正确性、效率等。时间复杂度分析算法执行次数随输入规模n的增长趋势,忽略常数和低阶项,关注主导项。第一章为后续学习各种数据结构(如线性表、树、图)提供统一的分析框架。

spinage的博客 528

360手机助手电脑版 v2.4.0.1315绿色PC独立版-win2003

360手机助手电脑版 v2.4.0.1315绿色PC独立版-win2003

wannier90-3.1.0.tar.gz

Linux版wannier90最新3.1.0安装包

上一篇: Linux下基于socket和多线程的聊天室小程序
下一篇: 数据结构(2)—— 栈和队列
Robot__Man
博客等级 码龄12年 251粉丝 109原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值