数据结构—表 一、介绍早期的编程总是说程序就是算法加数据结构这个有一定的道理。只不过随着后来编程技术的广泛应用特别是互联网大爆发后数据结构和算法被深埋到了后端和底层。这才使得很多的开发人员对数据结构的理解大多停留在应用的层次上。数据结构有很多种随着编程技术的不断发展又出现了不少新的数据结构。特别一些新思想和新概念的出现新的数据结构也现的也越来越多。但从整体上看数据结构的本质并没有变即数据集体的关系抽象。从另外一个角度看数据结构就是降低数据的熵增。二、表在互联网的应用中Table,表作为一种数据结构非常常见。但在实际的应用中表往往与特定的应用场景或应用方式相绑定。可以这样认为表作为数据结构没有一个严格的定义它是一类数据结构的整体的描述即一个具有多重含义的集合的概念。根据具体的结构、存储方式和约束机制的不同可以把表为分线性表、哈希表和多维数组矩阵表。三、说明在上面的分析中知道了表可分为三大类线性表线性表是最常见的它一般指具有相同的数据类型的数据元素的有限序列。如链表、一维数组等等。从物理存储机制来看线性表分为两类即顺序存储和离散链式存储。线性表的最主要特点就在于有限和有序性其元素具有同质性和一对一性。。哈希表有线性表就有非线性表哈希表就是一种散列表它是非线性的。一般来说在开发提及的表往往是指的哈希表。它是通过哈希函数将关键字映射到有限地址集合的一种表。哈希表在互联网上的应用非常广泛从分布式哈希到树的底层处理都有它的身影广义表广义表是线性表的一种递归的扩展虽然它是线程表的扩展但从严格意义上讲它已经不属于线性表而属于非线性表了。可以理解为一个线性表的内部元素可以是单个元素也可以是元素集合广义表。在AI和大模型如此流行的现在则可以从更抽象的层次看待表。体现到具体的应用中它可以是矩阵也可以是多维数组其实还有一些叫做表的数据结构它不属于上面的任何一类比如Redis中的跳表。可以把这些统统都划成非线性的数据结构中去。另外还需要注意往往从不同角度看待数据结构就会出现不同的分类。这就需要开发者不必纠结于如何划分数据结构而是通过划分掌握数据结构的特点。这才是学习数据结构的目的。对于传统的数据结构定义来说非线性的数据结构而不是非线性表是普遍的表述它一般是指图、树等数据结构它的核心本质是数据结构中的元素是“一对多或多对多”。四、应用场景在明白了上述的线性表的分类和定义后其实就会发现其应用是非常广泛的。除了传统的链表、队列和栈等基础的数据结构应用。它们还可以组合实现更复杂的数据结构。包括经常使用的一些标准库中的数据结构如Map、树等等。特别是线性表其实复杂一些的数据结构底层几乎都需要它来配合实现。比如哈希表它的冲突解决可以使用链表也可以使用扩大数组的方式。B树的数据存储时也可以考虑数组。正如侯老师的话源码之前了无秘密。有时间还是要多看一下源码。五、C例程下面看一个简单的广义表的源码#includeiostream#includememory#includevariant#includevectorclass GeneralizedList{public:using Elemstd::variantint,std::shared_ptrGeneralizedList;voidaddElemSingle(intv){elems_.push_back(v);}voidaddElemList(std::shared_ptrGeneralizedListlist){elems_.push_back(list);}voiddisplay()const{std::cout(;for(size_ti0;ielems_.size();i){if(std::holds_alternativeint(elems_[i])){std::coutstd::getint(elems_[i]);}else{std::getstd::shared_ptrGeneralizedList(elems_[i])-display();}if(i1elems_.size()){std::cout, ;}}std::cout);}private:std::vectorElemelems_;};intmain(){autogListstd::make_sharedGeneralizedList();gList-addElemSingle(3);gList-addElemSingle(4);autosListstd::make_sharedGeneralizedList();sList-addElemSingle(7);sList-addElemSingle(8);gList-addElemList(sList);gList-addElemSingle(5);gList-display();std::coutstd::endl;return0;}代码没有什么难度不再分析展开。其它如线性表或哈希表的例子太多了也不再给出。六、总结把基础的知识整理成体系既可以方便的整理分析又可以从不同角度来掌握不同技术点间的逻辑关系。这样在不同的应用场景下就可以灵活的对多种技术进行组合重组实现更强大的功能。

相关新闻

最新新闻

讯飞创意赛成绩解读:AI技术趋势与项目复盘指南

讯飞创意赛成绩解读:AI技术趋势与项目复盘指南

1. 项目概述:一次创意与技术的双重检阅最近,讯飞创意组别全国选拔赛的成绩终于公布了。作为一名长期关注并参与过类似技术竞赛的从业者,我深知这份成绩单背后,远不止是简单的排名和分数。它更像是一份关于当前技术应用趋势、创意实…

2026/8/28 19:00:27
无人机电力巡检数据集 航空影像输电线路与输电塔分割数据集,使用U-Net架构进行实现。前端界面使用Flask,UI界面使用PyQt5。电缆,铁塔木塔混凝土数据集

无人机电力巡检数据集 航空影像输电线路与输电塔分割数据集,使用U-Net架构进行实现。前端界面使用Flask,UI界面使用PyQt5。电缆,铁塔木塔混凝土数据集

无人机电力巡检数据集 航空影像输电线路与输电塔分割数据集,使用U-Net架构进行实现。前端界面使用Flask,UI界面使用PyQt5。电缆,铁塔木塔混凝土数据集航空影像的输电线路与输电塔分割数据集。 该数据集包含1234张图像,超高分辨率&…

2026/8/28 19:00:27
深度学习YOLO+大模型deepseek农作物病虫害检测识别系统 农作物YOLO数据集 农作物害虫数据集

深度学习YOLO+大模型deepseek农作物病虫害检测识别系统 农作物YOLO数据集 农作物害虫数据集

文章目录🌾 农作物病虫害检测识别系统📦 项目简介🎯 核心亮点🧠 可识别病虫害类别🌽 玉米(4 类)🌾 水稻(3 类)🍓 草莓(7 类&#xff0…

2026/8/28 19:00:27
真实物理世界AI压力测试:从实验室到工程实践

真实物理世界AI压力测试:从实验室到工程实践

这次我们不聊某个一键部署的WebUI,也不聊某个开源模型的跑分。我们要聊一个更“硬核”的问题:AI能不能在真实物理世界的实验室里稳定干活?中国科大相关团队的最新研究方向,可以理解成一次面向真实物理环境的AI压力测试。传统压力测…

2026/8/28 19:00:27
自研芯片与端侧大模型:AI Cube与模型部署实战解析

自研芯片与端侧大模型:AI Cube与模型部署实战解析

最近科技圈被两个关键词同时带热:玄戒 O100 和 AI Cube。前者是小米自研芯片的原型代号,后者是一台端侧 AI 计算单元真机。两者放在一起看,指向的技术路线很明确——自研芯片 端侧大模型。 这篇文章不讨论发布会跑分,也不做参数…

2026/8/28 19:00:27
从KV缓存到分布式存储,读懂大模型推理系统的底层优化逻辑

从KV缓存到分布式存储,读懂大模型推理系统的底层优化逻辑

在大模型落地普及的当下,很多人钻研Transformer架构、微调算法和提示词工程,却常常忽略一个核心问题。同等算力显卡,有的推理服务每秒只能处理寥寥几个请求,有的却能轻松承载上百并发,长文本生成场景下的性能差距更是成…

2026/8/28 18:55:27