数据结构:基础知识和链表①

一、概念

        程序==数据结构+算法

                1.描述数据存储和操作的结构        

                2.操作数据对象的方法

二、衡量代码的质量和效率     

        无论代码操作数据量多大,希望程序代码的运行时间保持恒定        

        随着数据的增长,程序运行时间缓慢增长

        随着数据的增长,程序运行时间快速增长

(一)时间复杂度:数据量的增长与程序运行时间的增长所呈现的比例函数关系,称为时间渐进复杂度函数,简称时间复杂度

        1.O(1):程序运行时间维持恒定

        2.O(log n)(二分法):程序刚开始运行时间可能增长较快,但经过一定数据量后,程序运行趋于恒定

        3.O(n):(for循环)程序运行时间随数据量增长呈现固定的比例关系关系

        4.O(nlog n)        5.O(n^2)        6.O(n^3)        7.O(2^n)

(二)空间复杂度:数据的增长与程序占据空间的增长所呈现的比例函数关系,称为空间复杂度

三、数据结构

(一)逻辑结构:线性结构:表(一对一),非线性结构:树(一对多)、图(多对多)

(二)存储结构:顺序结构、链式存储、散列存储、索引存储

(三)常见的数据结构

        1.顺序表

        2.链式表(*)

        3.顺序栈(*)

        4.链式栈(*)

        5.顺序队列(*)

        6.链式队列(*)

        7.二叉树(*)

        8.邻接表

        9.邻接矩阵

四、链表

(一)链表

        1.顺序表(数组)特点

                1.1存储空间连续

                1.2访问元素方便

                1.3无法利用小的空间,必须连续的大空间

                1.4顺序表元素必须有限(不存在无限连续的空间)

                1.5插入和删除效率低

        2.链表特点

                2.1存储空间不需要连续        

                2.2访问元素不方便

                2.3可以利用一些小的存储空间

                2.4链表元素可以没有上限

                2.5插入和删除效率高

(二)链表分类

        1.单向链表:只能通过链表节点找到后一个节点,访问链表元素的方向是单向的

        2.双向链表:能够通过链表节点找到前一个节点和后一个节点

        3.循环链表:能够通过第一个节点快速找到最后一个节点,能够通过最后一个节点快速找到第一个节点

        4.内核链表:Linux内核所采用的一种通用的链表结构

(三)单向链表

        1.定义链表节点类型        

        2.空链表的创建

                   return        ptmpnode;

                2.1创建一个空的链表节点

                2.2data不需要赋值(最好赋值),空白节点不存放数据,主要为了保证链表操作的便利性

                2.3pnext必须赋值为NULL,表示该节点为最后一个节点

                2.4将节点地址返回

        3.链表的头插法:在链表的开头插入一个元素

                3.1申请新的节点空间

                3.2将存放的数据放入新申请的数据空间中

                3.3将新申请节点的pnext赋值为空白节点的pnext

                3.4将空白节点pnext赋值为新申请节点

                3.5代码

        4.链表的遍历:访问链表中每个节点元素

        5.链表的删除:从链表中删除指定元素

                5.1定义两个指针ptmpnode用来遍历链表查找要删除的节点元素,ppernode永远指向ptmpnode的前一个元素

                5.2当ptmpnode找到要删除的节点元素,让pprenode->pnext赋值为ptmpnode->pnext

                5.3将要删除的节点元素释放

                5.4让ptmpnode判断下一个节点元素是否要删除,直到该指针指向NULL为止

        

五、Makefilee

(一)Makefile:工程管理工具,主要用来管理代码的编译

        1.Makefile可以根据文件中的规则来选择符合条件的代码完成编译

        2.Makefile能够依赖关系和文件修改的时间戳来决定哪些代码需要编译,哪些代码不需要重新编译

(二)使用规则

        1.在工程目录下,创建一个Makefile或makefile的文件

        2.在Makefile中编写对应的文件编译规则

        3.在工程目录下使用make来调用Makefile中的规则完成代码编译

        4.编译代码成功后,即可运行可执行程序

(三)语法规则

        1.要生成的文件:所依赖的文件

        2.             生成命令方式

        

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

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

相关文章

进阶向:自动化天气查询工具(API调用)

自动化天气查询工具(API调用)完全指南天气数据是日常生活中经常需要查询的信息之一。本教程将介绍如何使用Python编写一个自动化天气查询工具,通过调用开放的天气API获取实时天气数据。这个工具适合完全不懂编程的新手学习,将从最…

【ROS2】常用命令

1、目录结构在 ROS 2 包中,launch、urdf、rviz(通常指 RViz 配置文件)、config 等文件夹应直接放在包的根目录下(与 robot_arm/ Python 模块目录同级)。这是 ROS 2 社区的通用约定,便于工具(如 …

基础组件(三):mysql连接池

文章目录一、MySQL连接池设计1. 连接池解决了什么问题?连接池的作用 (好处)为什么不创建多条连接而用连接池2. 同步和异步连接池的区别同步连接池(场景局限,应用服务器启动时初始化资源)异步连接池&#xf…

FI文件包含漏洞

本地文件包含(LFI)文件包含开发人员将可重复使用的内容写到单个文件中,使用时直接调用此文件,无需再次编写,这种调用文件的过程一般被称为文件包含。这样编写代码能减少代码冗余,降低代码后期维护难度&…

rapidocr_web v1.0.0发布了

建立RapidOCRWeb独立仓库 终于将web这块代码移了出来,成立了独立仓库RapidOCRWeb (https://github.com/RapidAI/RapidOCRWeb )。这样以来,RapidOCR仓库下的各个衍生项目均有自己的独立仓库,可以单独控制发版和维护。这也算是为RapidOCR减负了…

Arduino IDE离线安装ESP8266板管理工具

文章目录概要官网地址开发板管理地址安装ESP8266开发板支持离线安装额外记录NODE启动服务概要 Arduino IDE离线安装ESP8266板管理工具&#xff0c;在线安装因为网络或者https的问题不能安装 官网地址 Adruino&#xff1a;https://www.arduino.cc/ ESP8266项目&#xff1a;<…

两款免费数据恢复软件介绍,Win/Mac均可用

数据已成为我们生活与工作中不可或缺的重要组成部分。无论是珍贵的家庭照片、关键的工作文档&#xff0c;还是重要的学习资料&#xff0c;都以数据的形式存储在各类设备中。然而&#xff0c;数据丢失的情况却时常发生&#xff0c;可能是误操作删除&#xff0c;可能是设备意外损…

Java开发中敏感信息加密存储全解析:筑牢数据安全防线

Java开发中敏感信息加密存储全解析&#xff1a;筑牢数据安全防线 一、引言 1.1 敏感信息存储的现状与挑战 在数字化时代&#xff0c;数据已然成为企业和组织的核心资产之一&#xff0c;而敏感信息的存储更是重中之重。从日常的用户登录密码、身份证号码&#xff0c;到金融领域…

list的使用和模拟

(一)list的了解 (1)简单了解 list的文档介绍 list是基于双向链表的序列式容器&#xff0c;支持双向迭代和任意位置的常数时间插入删除&#xff0c;相比 array、vector 等容器在这类操作上更高效&#xff0c;但不支持随机访问&#xff08;访问需线性遍历&#xff09;且因额外…

Docker 初学者需要了解的几个知识点 (五):建容器需要进一步了解的概念

之前在《Docker 初学者需要了解的几个知识点》几篇文章里&#xff0c;我们梳理了 Docker 的核心概念&#xff08;如镜像、容器、网络等&#xff09;&#xff0c;但在实际搭建 ThinkPHP 容器环境时&#xff0c;又遇到了一些更具体的术语和配置场景。这些内容和实操结合紧密&…

【数据结构】栈的顺序存储(整型栈、字符栈)

【数据结构】栈的顺序存储&#xff08;整型栈、字符栈&#xff09;一、栈的结构定义二、字符栈的初始化、入栈、出栈、判断是否栈为空、获取栈顶元素、获取栈的当前元素个数等操作三、整型栈的初始化、入栈、出栈、判断是否栈为空、获取栈顶元素、获取栈的当前元素个数等操作一…

【大模型实战】向量数据库实战 - Chroma Milvus

在 RAG&#xff08;检索增强生成&#xff09;场景中&#xff0c;非结构化数据&#xff08;文本、图像等&#xff09;的高效检索是核心需求。传统关系型数据库难以胜任&#xff0c;而向量数据库通过将数据转化为向量、基于相似度快速匹配&#xff0c;成为 RAG 的关键支撑。本文聚…

pytorch程序语句固定开销分析

深入探索PyTorch与Python的性能微观世界&#xff1a;量化基础操作的固定开销 在深度学习的性能优化工作中&#xff0c;开发者通常将目光聚焦于模型结构、算法效率和并行计算策略。然而&#xff0c;在这些宏观优化的背后&#xff0c;构成我们代码的每一条基础语句——无论是PyTo…

ABP VNext + CloudEvents:事件驱动微服务互操作性

ABP VNext CloudEvents&#xff1a;事件驱动微服务互操作性 &#x1f680; &#x1f4da; 目录ABP VNext CloudEvents&#xff1a;事件驱动微服务互操作性 &#x1f680;一、引言 ✨☁️ TL;DR&#x1f4da; 背景与动机&#x1f3d7;️ 整体架构图二、环境准备与依赖安装 &am…

软件测试测评公司关于HTTP安全头配置与测试?

浏览器和服务器之间那几行看不见的HTTP安全头配置&#xff0c;往往是抵御网络攻击的关键防线。作为软件测试测评公司&#xff0c;我们发现超过六成的高危漏洞源于安全头缺失或误配。别小看这些响应头&#xff0c;它们能直接掐断跨站脚本、点击劫持、数据嗅探的攻击路径。五条命…

Mysql集成技术

目录 mysql的编译安装与部署 1.编译安装mysql 2.部署mysql mysql主从复制 什么是mysql主从复制&#xff1f; 1.配置master 2.配置slave 3.存在数据时添加slave2 4.GTID模式 什么是GTID模式&#xff1f; 配置GTID 5.延迟复制 6.慢查询日志 核心作用 开启慢查询日志…

《MySQL进阶核心技术剖析(一): 存储引擎》

目录 一、存储引擎 1.1 MySQL体系结构 1.2 存储引擎介绍 1). 建表时指定存储引擎 2). 查询当前数据库支持的存储引擎 1.3 存储引擎特点 1.3.1 InnoDB 1.3.2 MyISAM 1.3.3 Memory 1.3.4 区别及特点 1.4 存储引擎选择 一、存储引擎 1.1 MySQL体系结构 1). 连接层 最上…

sqli-labs:Less-26关卡详细解析

1. 思路&#x1f680; 本关的SQL语句为&#xff1a; $sql"SELECT * FROM users WHERE id$id LIMIT 0,1";注入类型&#xff1a;字符串型&#xff08;单引号包裹&#xff09;、GET操作提示&#xff1a;参数需以闭合关键参数&#xff1a;id php输出语句的部分代码&am…

Spring Boot 的事务注解 @Transactional 失效的几种情况

开发中我们经常会用到 Spring Boot 的事务注解&#xff0c;为含有多种操作的方法添加事务&#xff0c;做到如果某一个环节出错&#xff0c;全部回滚的效果。但是在开发中可能会因为不了解事务机制&#xff0c;而导致我们的方法使用了 Transactional 注解但是没有生效的情况&…

#C语言——刷题攻略:牛客编程入门训练(四):运算

&#x1f31f;菜鸟主页&#xff1a;晨非辰的主页 &#x1f440;学习专栏&#xff1a;《C语言刷题合集》 &#x1f4aa;学习阶段&#xff1a;C语言方向初学者 ⏳名言欣赏&#xff1a;"代码行数决定你的下限&#xff0c;算法思维决定你的上限。" 目录 1. BC25 牛牛买电…