[开发者心得] “数据结构”课作业笔记#001-简述-逻辑结构与存储结构

[复制链接]
884 |2
脑的研发记录 发表于 2023-9-15 23:52:28 | 显示全部楼层 |阅读模式
本帖最后由 脑的研发记录 于 2023-9-16 00:01 编辑

“数据结构”课作业笔记#001-简述-逻辑结构与存储结构

所用编辑器版本0.25.0.4

目录总览:
壹.存储结构
贰.逻辑结构
叁.简单说明
肆.相关参考链接


壹.存储结构
感觉“存储结构”像是发展过来的词,计算机一开始发展,甚至都没有存储结构一说,因为当时就一种方法存储,谁也不知道还会发展出其他存储来。
就像大家都使用电脑,谁还能想到有种叫笔记本的这样的小型电脑。后来电脑就分台式机,笔记本。数据结构这种称呼也就只有在进行存储选择或者限定讨论范围使用。感觉还是比较鸡肋的词语,还是少提比较好。
存储结构按发展来说,是先有了纸带,纸带上一行有孔,孔如果被堵死了,这个堵死的孔不能让插头过去,这样只要检测这一排插头的通电情况就可以读取纸带。

然后把这一排插头的通电情况做成一个表,
一截纸带:
wwwwwww 翻译    序号                         计算机学生的视角
○○○○○○○○ 00000000 0                                                  2^0*0
○○○○○○○● 00000001 1                                                  2^0*1
○○○○○○00000010 2                                      2^1*1+2^0*0
○○○○○○00000011 3                                      2^1*1+2^0*1
○○○○○○ 00000100 4                         2^2*1+2^1*0+2^0*0
○○○○00000101 5                         2^2*1+2^1*0+2^0*1
○○○○00000110 6                         2^2*1+2^1*1+2^0*0
○○○○00000111 7                        2^2*1+2^1*1+2^0*1
○○○○00001000 8           2^3*1+2^2*0+2^1*0+2^0*0
○○○○00001001 9           2^3*1+2^2*0+2^1*0+2^0*1
00001010 10         2^3*1+2^2*0+2^1*1+2^0*0
00001011 11         2^3*1+2^2*0+2^1*1+2^0*1
00001100 12         2^3*1+2^2*1+2^1*0+2^0*0
00001101 13           2^3*1+2^2*0+2^1*0+2^0*1
00001110 14           2^3*1+2^2*0+2^1*1+2^0*0
00001111 15           2^3*1+2^2*0+2^1*1+2^0*1
  00010000 16  2^4+2^3*0+2^2*0+2^1*0+2^0*0
.........                    ……                          ……
○○○●○○○○ 00010000         
○○○●●○●○ 00011010                                     2^4+2^3+2^1
●○○○○○○● 10000001                                                 2^7+2^1
○○○○○○○○ 00000000
wwwwwww
这个就是计算机里读到的数据,读16,就是读到○这样的孔。
后来再有了诸如磁带,其实就是长一点的纸带,然后再优化一点就是打的点更紧凑了,
从肉眼可见的针孔到更细小看不见的磁粉,一个磁粉粒大概来说冲上磁就是1,退磁就是0。
一截磁带:
wwwwwww                 翻译                  序号                         计算机学生的视角
..........                          .........               ........                                .........
○○○○○○○○ ○○○○00000000 00001001   9         2^3*1+2^2*0+2^1*0+2^0*1
○○○○○○○○ 00000000 00001010 10         2^3*1+2^2*0+2^1*1+2^0*0
○○○○○○○○ 00000000 00001011 11         2^3*1+2^2*0+2^1*1+2^0*1
○○○○○○○○ 00000000 00001100 12         2^3*1+2^2*1+2^1*0+2^0*0
○○○○○○○○ 00000000 00001101 13         2^3*1+2^2*0+2^1*0+2^0*1
wwwwwww
PS.CPU一次读一行,一行有多少个孔,就是多少位的,后来的32位,64位,就是指的这个读一行,32位表示读一行,一行32个孔。
带宽增加了!
实际上带宽指的就是这个位数。同时跑过的孔多了,就像道路不拓宽,但是大家从一个人开汽车改到都骑摩托车。一条车道原来跑一辆车,送一个人,可以变成跑两辆摩托车,送两个人。
后来磁盘就是成卷的磁带,不是像手纸这样卷起来,是像晾晒玉米一样摊开。同心环这样。所谓扇区就是指的一个环的一小截,一个扇区的大小是512bit。
光盘实际上也是一样,只不过从磁带的磁粒换到小凹坑,从探测磁力的有无的磁头,换到探测反光有无的激光。
然后到了内存里,实际上是一个矩阵,就是矩形方阵。就和古代打仗那种方队,小学做操,体育课站队那种方阵。
此处应有图片,点击放大,内含示意:
image.png
实际上使用的存储,大多数是8个8个的使用,
这八个叫做一个字节。图中的矩形一行有16个。
这样就有了好几个长度为16,宽是1的矩形,
现在我们有了
[_____]
[_____]
[_____]
[_____]
[_____]

[_____]
[_____]
一叠矩形。
但实际上在数据结构里,只要考虑这些矩形之间的联系,就是关注上下隔着多少个矩形,或者根据怎样的情况选择从一个矩形跳转到另一个矩形里头去。

好了,现在可以说存储结构了,刚才的条就是顺序存储结构,其实就是一堆按顺序排列的矩形串罢了。
顺序存储结构就是这个字符图,两个存了数字的矩形中间不会空着。
[______]  [_______]  [_______]  [_______]
[______]  [_______]  [_______]  [_______]
[______]  [_______]  [_______]  [_______]
[___1__]  [___11__]  [___21__]  [___31__]
[___2__]  [___11__]  [___9  __]  [___32__]
[___3__]  [___11__]  [___20__]  [___33__]
[___4__]  [___11__]  [___156_]  [___34__]
[___5__]  [___11__]  [___25__]  [___35__]

[___6__]  [___11__]  [___0  __]  [___34__]
[___7__]  [___11__]  [___-1 __]  [___37__]
[______]  [_______]  [_______]  [_______]
[______]  [_______]  [_______]  [_______]
[______]  [_______]  [_______]  [_______]
这种        这种            这种         还有这种
所谓链式存储,不过如此图,就是两个存了数字的矩形中间会空着。
[______]  [_______]  [_______]  [_______]
[______]  [_______]  [_______]  [_______]
[______]  [_______]  [_______]  [_______]
[___1__]  [___11__]  [___21__]  [___31__]
[___2__]  [_______]  [_______]  [_______]
[______]  [___11__]  [_______]  [___33__]
[___4__]  [___11__]  [_______]  [___34__]
[___5__]  [_______]  [_______]  [___35__]

[______]  [_______]  [_______]  [___36__]
[___7__]  [_______]  [___-1 __]  [___37__]
[______]  [_______]  [_______]  [_______]
[______]  [_______]  [_______]  [_______]
[______]  [_______]  [_______]  [_______]
这种         这种            这种         还有这种

至于存了到底是

表      表   表        表      表      表     表         表
1还是 2    11 还是 11     -1还是 21     33 还是 35
2       4    11         11     21       -1     37         34
4       5    11         11                       35          31
7       7                                           34          37
5       1                                           31          36
                                                     36           33

这就是逻辑结构要解决的事情了。

贰.逻辑结构
emm,这个难住了,逻辑结构有四种。
刚才的表实际上是一种线性结构,可以用一根线穿起来,,1,2,3,4,5.按递增排列的,诸如排行榜里就需要这样的线性结构,第一后面接着第二,第二后边接着第三,第三后边接着第四,第五后边接着第六……倒数第三接着倒数第二,倒数第二接着倒数第一。
但实际上一我开始学的代码还是写"集合"这种逻辑结构的代码,因为最容易写,其他的代码可以在这个"集合”的基础上改改就行。这样代码面目全非的速度慢一些,不至于措手不及。(这个土方法当然是因为自己太菜了,不会直接默写嘤嘤嘤)
那个叫“集合”的逻辑结构,其实就是每个元素之间没有联系{1,2,3,4,5},比如说:是一个人有1个苹果,另一个人有2个橘子,还有一个人有3个作业,还有一个人有4小只玩偶,还有一个人有5GWiFi。然后用表单记录这几个人手有里的东西。这个表单实际上的序列只是索引,就像目录一样,序列标记的栏目里存的数字实际上才认为是数据。

emm,确实离谱,但是计算机只要数字就行,其他有bug那是打补丁,新增别的信息的事情了。但核心代码写起来确实如此,毕竟都是从一个存储结构里发家的概念,有一点相似很正常。
至于树结构,就是线性结构再复杂一点,两根线像T字一样绑起来,有三个头,其实吧T倒过来就行,再极端一点,就是像树分叉一样,树干分叉,分的叉枝又分叉。这就是树结构。
树结构典型例子就是菜单栏,一个菜单有好几个小项,每一个小项又有一堆小小选项。“一对多”。怎么把这些小小选项放进一长条的存储矩阵里。实际需要写代码,然后和预期不符才能发现顺序存储的话存储数据不容易修改,链式存储会更好一点。
至于图结构,emm,难以用文字描述。“多对多”。
上截图:
image.png image.png
如图这俩都是树结构,或者说,除了集合,线性结构,树结构,留下来的就是图结构了,这样的"多对多"。
大概应用,如好友系统,随机循环动画(原神登录前的阶梯生成)。后续再补充。
叁.简单说明
文案更新比较慢,落地应用以后会持续增加案例。代码的话emm,先出简单完整的单脚本放出来。后续再想办法加上游戏工程里,做出第二代代码,然后再增加一点其他的案例来丰富帖子emm.

肆.相关参考链接

参考文献:
数据结构一词:
“数据结构的概念最早由c. A. R. Hoare和N. Wirth在1966年提出,对这一发展做出杰 出贡献的是D. E. Kunth和C. A. R. Hoare,D. E. Kunth的《计算机程序设计技巧》和C. A. R. Hoare的《数据结构札记》,这两部著作对数据结构这门学科的发展做出了重要贡献。”
数据结构的发展 - 知乎 (zhihu.com)

存储介质:
浅谈存储器的进化历程 - 知乎 (zhihu.com)
纸带打孔部分:
纸带打孔编程之后是怎样编程? - 知乎 (zhihu.com)
物理器件-电容存储有无电荷,视频的12:10——14:46处

深入浅出数据结构与算法(微课视频版)——里面是C语言的,写帖子的时候,书是从图书馆借的,但是网上查到有电子版的,可在线阅读。
深入浅出数据结构与算法(微课视频版) - 陈锐 等 编著 | 豆瓣阅读 (douban.com)
数据结构C语言版(我的上课教材),确信是同款书
数据结构C语言严蔚敏版(第二版)超详细笔记附带课后习题_数据结构c语言版严蔚敏_别掉头发了小李的博客-CSDN博客









回复

使用道具 举报

吃到苦就是得到了甜 发表于 2023-9-17 09:38:57 | 显示全部楼层
这是啥
回复

使用道具 举报

脑的研发记录楼主 发表于 2023-9-17 10:57:37 | 显示全部楼层

emm,大概讲一个字节的数据是怎样被存储的。
然后尝试过渡到,讲在计算机的限制下,好几个字节的数据是怎样存储的。

得看一下新的一个链接的P8(8.指令和程序)的3:21-7:00片段


还有参考文献的
物理器件-电容存储有无电荷下面的链接,视频的12:10——14:46片段。

了解计算机处理数据的真正样子,然后在这个前提和限制之下对一堆字节数据的组织处理的各种情况。
这个就是帖子本意想写的内容emm。
回复

使用道具 举报

热门版块
快速回复 返回顶部 返回列表