数据结构基本知识
一、什么是数据结构
1.1、组织存储数据
---------》内存(存储)
1.2、研究目的
- 如何存储数据(变量,数组....)
- 程序=数据结构+算法
1.3、常见保存数据的方法
- 数组:保存自己的数据
- 指针:是间接访问已经存在的空间------------》操作数据,并不能销毁别人的数据
- 指针数组:并不保存数据,也是指向那个空间,并不能保存数组
- 二维数组:保存数据的
- 数据库也其实数据结构,实质上是对复杂数据的一种封装
二、数据与数据之间的关系
2.1、数据的逻辑结构
数据元素与元素之间的关系
- 集合:关系平等
- 线性:元素之间一对一的关系(表,数组,链表)
- 有当前数据出发,向后最多能找一个后继,先前找最多只能有一个前驱
- 树形:元素之间一对多(二叉树),从当前找,后继有多个,前驱只有1个
- 图型结构:元素之间多对多的关系(网状结构)
- 后继有多个,前驱有多个
2.2、数据的物理结构
1、顺序存储:采用一段连续的内存空间保存元素。
优点:空间连续,访问方便缺点:插入删除需要移动大量的元素需要预分配内存空间容易造成存储空间碎片
2、链式存储:采用一组非连续的内存空间保存元秦
缺点:访问元秦效率低优点:插入和删除数据方便不需要预分配内存
3、索引存储:通过关键字构建索引表,通过索引表来来找到数据的存储位置
索引:维护索引表,关键字和其对应得地址
4、散列存储(哈希存储):将数据元素的存储位置与关键码之间建立确定对应关系从而实现查找的存储方式
散列:选取关键字,经过计算,算出对应位置,下次只需要,拿着这个名字,经过计算,就找到位置
2.3、数组与链表区别
2.3.1、数组 线性顺序存储结构
1、空间连续
2、访问数据方便(O(1))
3、数据插入、删除复杂,需要移动大量数据(O(n))
4、预分配内存空间
5、容易产生内存碎片
1、按照指定字节对齐
2、注意结构成员分布
2.3.2、链表 线性链式结构
1、空间不连续
2、访问数据不方便(O(n))
3、数据的插入、删除方便,时间复杂度(O(1))
4、不需要预分配空间,只需申请一个新的节点插入进去即可
5、能够利用内存空间中比较小的碎片
注意:说数据属于那种关系的时候,两种都说。
2.4、物理结构
1、线性结构:
顺序表:-----》数组
链式表:-----》链表
2、链表:
单向链表:

有头链表:有一个头结点进行操作,只不过没有数据
无头链表:没有上述的东西
3、封装
--------》高内聚、低耦合
低耦合,关联程度低
高内聚,一个函数干一件事
面向过程的编程思想:第一步干什么,第二步3干什么....
面向对象的编程思想,封装性比较好
用什么来做什么
冰箱----------------------》
属性:特性(变量)
行为:装东西(函数)
大象-----------------------》
三、链表的操作
1、创建头结
Link_t *Create_link()
{Link_t *link = malloc(sizeof(link));if(NULL == link){perror("create error");return NULL;}link->clen = 0;link->phead = NULL;return link;
}
2、头插
int push_link_join(Link_t *plink,DATATYPE data)
{Link_Node_t *pnode = malloc(sizeof(Link_Node_t));if(NULL == pnode){perror("fail node");return -1;}pnode->data = data;pnode->pnext = NULL;pnode->pnext = plink->phead;plink->phead = pnode;plink->clen++;return 0;
}
3、尾插
int tail_insert(Link_t *plink,DATATYPE data)
{Link_Node_t *pnode = malloc(sizeof(Link_Node_t));if(NULL == pnode){perror("fail node");return -1;}pnode->data = data;pnode->pnext = NULL;Link_Node_t *p;p = plink->phead;if(p == NULL){p = pnode;}while(p->pnext){p = p->pnext;}pnode->data = data;pnode->pnext = NULL;p->pnext = pnode;plink->clen++;printf("%d\n",pnode->data);
}
4、遍历
int travel_link(Link_t *plink)
{int i = 0;Link_Node_t *p ;p = plink->phead;while(p != NULL){printf("num = %d,data = %d\n",i,p->data);++i;p = p->pnext;}
}
5、头删
int delete_link_first(Link_t *plink)
{Link_Node_t *pnode;if(plink->phead == NULL){return 0;}else{pnode = plink->phead;plink->phead = pnode->pnext;free(pnode);plink->clen--;}return 0;
}
6、尾删
int delete_link_tail(Link_t *plink)
{Link_Node_t *pnode;if(plink->phead == NULL){return 0;}else if(plink->clen == 1){delete_link_first(plink);}else{pnode = plink->phead;while(pnode->pnext->pnext != NULL){pnode = pnode->pnext;}free(pnode->pnext);pnode->pnext = NULL;}
}
7、查对应结点
Link_Node_t *select_link(Link_t *link,DATATYPE data)
{Link_Node_t *pnode = link->phead;while(pnode->data != data){pnode = pnode->pnext;}printf("num = %d\n",pnode->data);return pnode;
}
8、改
Link_Node_t *alter_link(Link_t *link,DATATYPE data,DATATYPE wishdata)
{Link_Node_t *pnode = select_link(link,data);pnode->data = wishdata;printf("wishdata = %d\n",pnode->data);return pnode;
}
9、销毁
int destory_link(Link_t *link)
{Link_Node_t *pnode = link->phead;if(pnode == NULL){free(link);return 0;}else{while(link->clen != 0){delete_link_first(link);}return 0;}free(link);
}
相关文章:
数据结构基本知识
一、什么是数据结构 1.1、组织存储数据 ---------》内存(存储) 1.2、研究目的 如何存储数据(变量,数组....)程序数据结构算法 1.3、常见保存数据的方法 数组:保存自己的数据指针:是间接访问已经存在的…...
浙大数据结构:02-线性结构4 Pop Sequence
这道题我们采用数组来模拟堆栈和队列。 简单说一下大致思路,我们用栈来存1234.....,队列来存输入的一组数据,栈与队列进行匹配,相同就pop 机翻 1、条件准备 stk是栈,que是队列。 tt指向的是栈中下标,fr…...
java开发,记录一些注解和架构 pojo、entity、respository
最近接了一个项目,说是项目其实也不算是项目,因为是把这个项目赛到其他项目中的。 熟悉一些这个项目的功能,梳理了一下,在代码开发中主要关心pojo、entity、respository、controller、service。 在这里主要记录前3个的流程与作用…...
MatLab基础学习01
MatLab基础学习01 1.基础入门2.MatLab的数据类型2.1数字2.2字符串2.3矩阵2.4.元胞数组2.5结构体 3.MatLab的矩阵的操作3.1矩阵定义与构造3.2矩阵的下标取值 4.MatLab的逻辑流程4. For循环结构4.2 While循环,当条件成立的时候进行循环4.3 IF end 1.基础入门 matlba必…...
第 5 章多视图几何
本章讲解如何处理多个视图,以及如何利用多个视图的几何关系来恢复照相机位置信息和三维结构。通过在不同视点拍摄的图像,我们可以利用特征匹配来计算出三维场景点以及照相机位置。本章会介绍一些基本的方法,展示一个三维重建的完整例子&#…...
IOS 开发者账号注册流程
注册步骤 准备资料 营业执照 法人信息(电话、身份证信息) 注册邮箱(公司邮箱) 开发者信息(电话、身份证信息、邮箱)1. 注册AppleID 注册地址: https://appleid.apple.com/account 填写表单信…...
netty之NioEventLoop和NioEventLoopGroup
类结构图 NioEventLoopGroup #mermaid-svg-5g1iVjr5oyhqXK92 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-5g1iVjr5oyhqXK92 .error-icon{fill:#552222;}#mermaid-svg-5g1iVjr5oyhqXK92 .error-text{fill:#55222…...
睿考网:中级经济师考试题型有哪些?
中级经济师考试时间在每年的11月份,2024年考试时间定于11月16-17日,考试科目为《经济基础知识》与《专业知识与实务》两科。 《专业知识与实务》有10个专业,分别是工商管理、知识产权、农业经济、财政税收、金融、保险、运输经济、人力资源管…...
kubernetes集群部署Confluence 7.2.0+mysql 5.7(自测有效)
背景介绍: Confluence是一个专业的企业知识管理与协同软件。使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息、文档协作、集体讨论,信息推送。 这里介绍的使用的是Confluence 7.2.0版本的。 一、在kubernetes集群部署 1…...
Vmware ubuntu22.04 虚拟机 连接Windows主机虚拟串口
1. Windows虚拟串口配置 虚拟串口下载:虚拟串口 VSPD 的使用_vspd使用教程-CSDN博客 虚拟串口使用:使用虚拟串口在一台电脑上模拟串口通讯_pc怎么模拟一主多从串口-CSDN博客 2. ubuntu虚拟串口配置 Vmware ubuntu22.04 虚拟机 连接windows主机虚拟串口…...
Postgresql碎片整理
创建pgstattuple 扩展 CREATE EXTENSION pgstattuple 获取表的元组(行)信息,包括空闲空间的比例和行的平均宽度 SELECT * FROM pgstattuple(表名); 查看表和索引大小 SELECT pg_relation_size(表名), pg_relation_size(索引名称); 清理碎片方…...
【最新华为OD机试E卷-支持在线评测】字母组合(200分)多语言题解-(Python/C/JavaScript/Java/Cpp)
🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…...
力扣493.翻转对
class Solution {public static int MAXN 50001;public static int[] help new int[MAXN];public static void main(String[] args) {}public static int reversePairs(int[] arr) {return counts(arr, 0, arr.length - 1);}//统计l …… r上反转对的数量,同时计算…...
潜望长焦+快充:vivo X200系列,小尺寸手机的大突破
在智能手机市场日益激烈的竞争中,厂商们不断推陈出新,以满足消费者多样化的需求。vivo作为中国知名的智能手机品牌,一直以其创新的设计和强大的功能赢得市场的认可。 近日,vivo X200系列的即将发布引起了广泛关注,特别…...
Stable Diffusion训练LoRA模型参数详细说明(阿里巴巴堆友AI)
工具:线上模型训练堆友AI 一、训练参数 批量大小 (Batch Size) 作用:每次训练中使用的样本数量。参考值:可以从 8 到 64,取决于显存大小。 训练轮数 (Epochs) 作用:完整遍历训练数据的次数。参考值:通…...
Learn ComputeShader 12 Setting up a buffer-based particle effect
unity有自己的粒子系统,但是这次我们要尝试创建一个我们自己的粒子系统,而且使用计算着色器有下面这些好处。总而言之,计算着色器适合处理大规模的数据集。例如,能够高效地处理数万个甚至数百万个粒子的计算。这对于粒子系统这样的…...
【STL中容器汇总】map、list、vector等详解
容器学习分享 1、STL简介1.1、STL六大组件 2、vector容器2.1、vector 基本操作2.2、vector容器示例2.3、vector容器存放自定义数据类型示例2.3、vector嵌套vector示例 3、list 容器3.1使用示例3.2、list容器基本函数 4、map容器4.1、map函数原型4.2、map函数示例 1、STL简介 ST…...
Semantic Kernel + Natasha:一小时快速生成100个API的奇迹
大家好,我今天带来了一个让人瞠目结舌的实验:在一小时内快速生成了100个API! 其实如果手速高,可以更多。要知道,这得益于之前介绍过的Natasha —— 一个可以动态编译并加载代码的神奇工具。 动态编程神器! 探秘.Net…...
rancher upgrade 【rancher 升级】
文章目录 1. 背景2. 下载3. 安装4. 检查5. 测试5.1 创建项目5.2 创建应用5.3 删除集群5.4 注册集群 1. 背景 rancher v2.8.2 升级 v2.9.1 2. 下载 下载charts helm repo add rancher-latest https://releases.rancher.com/server-charts/latest helm repo update helm fetc…...
【Linux】多线程:线程互斥、互斥锁、线程安全
目录 一、多线程访问公共资源时所产生的问题 二、互斥相关背景概念 互斥量mutex(锁)的引入 三、互斥量 1、初始化互斥量(mutex) 2、互斥量加锁 3、互斥量解锁 4、 销毁互斥量 四、互斥量的使用 1、使用静态互斥量 2、…...
潜变量扩散模型原理解析:从宝可梦生成看LDM工程落地
1. 项目概述:用宝可梦讲清楚潜变量扩散模型,不是比喻游戏,是真能跑通的原理复现你有没有试过让AI画一只“皮卡丘和喷火龙杂交出来的电火属性神兽”?不是简单拼贴,而是真正理解“电系的毛发质感火系的鳞片过渡神兽级别的…...
认知殖民与范式陷阱:当代人工智能发展路径的文明危机研究
认知殖民与范式陷阱:当代人工智能发展路径的文明危机研究摘要本文从文明安全与认知主权视角出发,系统批判了当前以Transformer架构、Scaling Law和大语言模型为核心的人工智能技术范式。研究指出,该范式不仅是技术路径的选择,更是…...
跨系统数据搬运总是要靠人工复制粘贴?2026智能体重塑企业数据流转新范式
在2026年的今天,尽管通用人工智能(AGI)已经深度介入生产力环节,但走进多数企业的财务、供应链或人力资源部门,依然能看到员工在多个窗口间频繁切换,机械地重复着CtrlC和CtrlV。这种看似原始的“数据搬运”行…...
Display Driver Uninstaller架构解析:深度驱动清理技术原理与最佳实践
Display Driver Uninstaller架构解析:深度驱动清理技术原理与最佳实践 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drive…...
洛雪音乐音源:打破音乐平台壁垒的聚合解决方案
洛雪音乐音源:打破音乐平台壁垒的聚合解决方案 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 你是否曾经为了听一首歌而在多个音乐平台之间来回切换?或者因为某个平台没有…...
C# WebAssembly构建高性能Web3D引擎实战
1. 这不是“把C#搬到浏览器”,而是重构Web图形开发的底层契约 你有没有试过在浏览器里跑一个带物理模拟、动态光照和实时骨骼动画的3D场景,结果发现JavaScript主线程卡成PPT,WebGL状态管理像在解九连环?我去年接手一个工业数字孪生…...
LoRA微调、DINOv2视觉基础模型与CLIP驱动编辑实战指南
1. 项目概述:这不是一份新闻简报,而是一份AI领域从业者的“十月实战观测手记”2021年10月,AI圈没有爆炸性突破,但有一股沉潜的力量在积蓄——模型能力正从“能跑通”加速转向“敢落地”。我翻遍当月所有主流技术博客、会议预印本、…...
5步终极指南:如何永久免费使用Cursor Pro AI编程助手
5步终极指南:如何永久免费使用Cursor Pro AI编程助手 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your tria…...
5个步骤掌握ScriptHookV:GTA V脚本开发终极指南
5个步骤掌握ScriptHookV:GTA V脚本开发终极指南 【免费下载链接】ScriptHookV An open source hook into GTAV for loading offline mods 项目地址: https://gitcode.com/gh_mirrors/sc/ScriptHookV 你是否曾梦想过为GTA V创造属于自己的游戏模组?…...
宇树造的“阿凡达”机甲,掀翻具身智能行业的桌子
作者:Evin编辑:刘致呈审核:徐徐出品:互联网江湖宇树GD01载人变形机甲火了。上次机器人这么火,还是马年春晚。到今天,上马年春晚的几家具身智能厂商中,银河通用的官网首页,依然有马年…...
