白话编程--数据结构概述

前言

1>计算机编程最重要的内容之一**.**

用框架调用几个API,传了几个数据,看到一些效果,以为自己行了.但稍微改变一下需求又得手忙脚乱一阵子.说明对关键概念的理解和运用还不是很深刻.看数据结构,学底层原理,才是提高水平的要义.

2>计算机编程最让人头疼的内容之一

到处是指针啊,链表啊,还有递归,感觉每次过去数据都不一样,开始时让人头晕目眩,

3>程序员值得深耕的领域

可以根据需求开发不同的数据结构,也是一项挑战.

引入

回到编程的初衷:处理数据以实现逻辑.

这些数据从哪里来,又到哪里去?数据的数量可能不止几个自定义基本类型,或者数组.可能有大量的同类型数据出现,比如建立一个身份证查询系统,有十几亿人的身份信息.那么用一个什么样的容器装入身份信息? 可以用数组,但是数组不容易增删,而且用什么查询?十位的索引?想想也会觉得很麻烦.所以才有了数据结构这门科学的出现.

数据结构是干什么的? 就算权威教科书,也没有给出一个很好的概念

--------当我们不知道该怎么去给出一个概念时,可以考虑去描述他的作用.

数据结构是用来建立数据集合的

白话数据结构

数据结构是建立数据集合的基本结构. //个人定义转载请注明:)

数据结构+定义的增删查等算法=符合逻辑结构的数据集合.

逻辑结构就是LIFO,FIFO,TREE等结构---------一张数据分布图描述出的结构

数据集合里元素的增加,删除,查找等操作应该由定义的增删查等算法来确定,并且各种操作不改变原有的逻辑结构

题外话

还记得那个关于编程最经典的概括吗?

程序=数据结构+算法;

好家伙,数据结构的定义和程序的定义几乎差不了多少.足以说明数据结构的重要性.

橙色的算法不光是和数据结构相关的算法**,** 理解成**"解决问题的方法"** 更恰当**,**范围广一些

数据结构的物理层

数据结构的物理层只有数组链表两种.---------当然也没办法,编程语言只提供了两种.

不论数据结构有多复杂,他们底层就是数组或者链表,或者他们的组合

---发挥想象,数组里的元素是链表,链表里的元素(数据域)是数组,数组里的元素是数组(指针),链表里的元素(数据域)是链表.这就是"他们的组合".

当然话说回来,数据结构最重要的还是其逻辑上的实现----建立逻辑结构,物理层面的实现要建立在正确的逻辑之上.

最简单的数据结构

如果学习一件事物,一上来就很难,难免会打击信心.从简单到困难才是正确的学习曲线

数组

1>数组就可以看成数据结构的一种.他是一个类型的数据集合.

数组特点: 长度固定,不能增加和删除元素,可以用索引查询获取值.,可以修改

2>二维数组:数组的数组,将一维数组看成一个元素,再建立一个数组.同样可以查和改不能删.

可变数组

数组似乎和数据结构没有多大关系,那么考虑一下实现一个可变数组.

需求:建立一个可变数组,要求可以增加和删除数组元素

---线性表的顺序存储实现

相关推荐
浅念-3 小时前
刷穿LeetCode:BFS 解决 Flood Fill 算法
数据结构·c++·算法·leetcode·职场和发展·bfs·宽度优先
im_AMBER6 小时前
手撕hot100之矩阵!看完这篇就AC~
javascript·数据结构·线性代数·算法·leetcode·矩阵
如君愿6 小时前
考研复习 Day 30 | 习题--计算机网络 第五章(运输层 上)、数据结构 图(上)
数据结构·计算机网络·课后习题
weixin_421725266 小时前
C语言中volatile关键字怎么用C语言volatile在多线程中的作用
c语言·数据结构·运算符优先级·变量命名·volatile关键字
05候补工程师8 小时前
【408 从零到一】线性表逻辑特征、存储结构对比与 C/C++ 动态内存分配避坑指南
c语言·开发语言·数据结构·c++·考研
努力努力再努力wz9 小时前
【MySQL 进阶系列】拒绝滥用root:从 mysql.user 到权限校验,带你彻底理解用户管理与授权机制!
android·c语言·开发语言·数据结构·数据库·c++·mysql
炸膛坦客9 小时前
嵌入式 - 数据结构与算法:(1-4)数据结构 - 单链表的两个核心缺点(引入循环/双向链表)
c语言·数据结构·链表
Hesionberger10 小时前
LeetCode 78:子集生成全攻略
java·开发语言·数据结构·python·算法·leetcode·职场和发展
上弦月-编程11 小时前
高效编程利器:转移表技术解析
c语言·开发语言·数据结构·算法·排序算法
薇茗12 小时前
【初阶数据结构】 左右逢源的分支诗律 二叉树2
c语言·数据结构·算法·二叉树