感性认识数据结构

2023-11-10 03:41
文章标签 数据结构 感性认识

本文主要是介绍感性认识数据结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以非常不专业的语言,分享一下自己的理解,试着感性的认识一下数据结构。
(来自于一位未知名知乎用户回答)
————————————————————————————————————————

在这里插入图片描述
想象一下我们有一条非常非常长的纸条
这张纸条只能写一行字
现在我们要把一些描述现实世界的东西写在这张纸条上。
然后把这张纸条给别人。
别人通过咱们这张纸条重构我们所描述的世界,或者在里面查找、推演出自己所需要的信息。
1.这张“纸条”就是信息的载体,包括硬盘、软盘、内存、甚至磁带,塑胶唱片,钢丝留声机,说白了他们都是一张转着圈或者拐着弯的纸条。
2.“给别人”的过程就是读写硬盘过程、网络传输过程、无线电发报机滴滴哒哒收发信息的过程等等。
3.数据结构所解决的问题就是,你怎么用一行字把这些复杂的东西描述出来,别人怎么读懂这些啰里吧嗦的东西(注:人看着啰嗦没事,机器看着不罗嗦就行)
4.编程,就是怎么解决3,怎么解决3之后解决重构出来的世界的一些具体问题…
结语:只要把我们的世界观从三维转到一维,就能学懂数据结构了…
————————————————————————————————————————
好像写出了点意思,继续开脑洞。
脑补一下黑客帝国中,史密斯碎成渣(三维降一维),变为一串串帅气的数字雨(多线程纸条?),传输到另一个地方(网络传输?)

在这里插入图片描述

在这里插入图片描述

数字雨又华丽的重组了一个史密斯(一维重构三维),来到尼尔面前(被打)。

在这里插入图片描述

————————————————————————————————————————
继续开脑洞?作为一个严谨的同学,这次脑洞要开的现实一点。
可以想象一下,
你是一个间谍,

在这里插入图片描述

女王大人命令你:
把敌人特务机构的层级关系(树?),用摩斯密码发回去。
把敌人网状的地下通道的拓扑结构(无向图?),用摩斯密码发回去。
把敌国当红明星之间的八卦关系(有向图?),用摩斯密码发回去。
在这里插入图片描述

是不是抱着发报机,哭着后悔没学好数据结构了,学渣特工同学

————————————————————————————————————————
好吧,来一丢丢小干货?

你以为你在看一个网页?
右键单击网页,查看源代码。
其实,你看的是一串字符,换行处的字符是\r\n
这是结构化的一行数据。
浏览器理解了这种结构,
显示给你看到了这个漂亮的网页。
你以为你看的是一个图片?
他也是一行数值,只不过可以根据长宽转换为矩阵
这个矩阵操控着显示器的色彩明暗,
虚拟一个现实给你,
也是结构化的一行数据。(可以试着把图片转为Base64编码理解下?)

你以为word很神秘?
后缀改成.zip,
然后解压,
你看到的,
还是一堆结构化的数据。
结构是人为的规则,书里讲的数据结构,是数据组织最基本的规则,是机器层次的数据组织规则。

还有各种各样的数据标准,文件格式,是更高层次的数据组织规则,是给编程人员看的。

更高层次的组织规则?比如老板给你要的报表的标准模板,那就是给业务人员看的。
————————————————————————————————————————
题外话:
1.一个工程问题首先抽象成理论问题,然后利用数学方法进行推演解决,获得了理论知识。然后一套理论知识形成一本书或者一门课。学一门课首先或者最终一定要搞清它解决的是什么样的工程问题,才算是学懂了。
换句话说,你要知道当初那个人是遇到了多么苦逼的问题,才提出一个这么牛逼的解决办法
2.学一门课,最重要的是理解,遇到实际问题要知道用什么方法去解决
打个比方就是为知识在大脑内存里建立索引,将知识存在外存,比如书本,百度之类,用到了再去复习一下读进内存。(不排除有内存够大的同学都记在脑子里)
比如当要你用关系数据库去存储树结构的时候,当给你链表让你拼写返回json数据的时候,当你要搜索一个矩阵中的连通区域的时候,最最起码要做到的是,知道自己现在需要一本数据结构的书,再好点要知道用哪一个章节的哪个模型。
学霸可能已经动手写出来了,但作为学渣翻翻书再写出来,也不会很丢人吧。
而且,下次你就可能就用不到翻书了。
3.不要让死气沉沉的概念、定义,约束了自己的想象力。一开始定义这个定义的人,沉淀了自己的思想,做出了精准的描述,为的是更好的与别人交流这个东西,而不是用来约束别人的思想。
4.当然,自己的专业知识、专业技能,最终还是要沉淀下来,毕竟还要靠它吃饭。最后还是赶快听楼上几位大牛的忠告,脚踏实地的去码代码吧…

————————————————————————————————————————
链接:https://pan.baidu.com/s/1pxQ0zY0aQdY_OaL9E1j3Cw
提取码:n7m6
在这里插入图片描述
分享几本个人下载的数据结构书籍,适合自己阅读学习的可以选择去商店购买正版书籍!

这篇关于感性认识数据结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/380217

相关文章

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

浙大数据结构:树的定义与操作

四种遍历 #include<iostream>#include<queue>using namespace std;typedef struct treenode *BinTree;typedef BinTree position;typedef int ElementType;struct treenode{ElementType data;BinTree left;BinTre

Python 内置的一些数据结构

文章目录 1. 列表 (List)2. 元组 (Tuple)3. 字典 (Dictionary)4. 集合 (Set)5. 字符串 (String) Python 提供了几种内置的数据结构来存储和操作数据,每种都有其独特的特点和用途。下面是一些常用的数据结构及其简要说明: 1. 列表 (List) 列表是一种可变的有序集合,可以存放任意类型的数据。列表中的元素可以通过索

浙大数据结构:04-树7 二叉搜索树的操作集

这道题答案都在PPT上,所以先学会再写的话并不难。 1、BinTree Insert( BinTree BST, ElementType X ) 递归实现,小就进左子树,大就进右子树。 为空就新建结点插入。 BinTree Insert( BinTree BST, ElementType X ){if(!BST){BST=(BinTree)malloc(sizeof(struct TNo

【数据结构入门】排序算法之交换排序与归并排序

前言         在前一篇博客,我们学习了排序算法中的插入排序和选择排序,接下来我们将继续探索交换排序与归并排序,这两个排序都是重头戏,让我们接着往下看。  一、交换排序 1.1 冒泡排序 冒泡排序是一种简单的排序算法。 1.1.1 基本思想 它的基本思想是通过相邻元素的比较和交换,让较大的元素逐渐向右移动,从而将最大的元素移动到最右边。 动画演示: 1.1.2 具体步

数据结构:线性表的顺序存储

文章目录 🍊自我介绍🍊线性表的顺序存储介绍概述例子 🍊顺序表的存储类型设计设计思路类型设计 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾” 和“内容共创官” ,现在我来为大家介绍一下有关物联网-嵌入

[数据结构]队列之顺序队列的类模板实现

队列是一种限定存取位置的线性表,允许插入的一端叫做队尾(rear),允许删除的一端叫做队首(front)。 队列具有FIFO的性质 队列的存储表示也有两种方式:基于数组的,基于列表的。基于数组的叫做顺序队列,基于列表的叫做链式队列。 一下是基于动态数组的顺序队列的模板类的实现。 顺序队列的抽象基类如下所示:只提供了接口和显式的默认构造函数和析构函数,在派生类中调用。 #i