| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 心得体会day37(日撸 Java 三百行) -> 正文阅读 |
|
[数据结构与算法]心得体会day37(日撸 Java 三百行) |
文章链接:日撸 Java 三百行(总述)_minfanphd的博客-CSDN博客 day37 十字链表37.1 思路整理(1)十字链表的数据结构: 由弧节点和顶点节点组成。其中每个节点的含义一定要清楚,不然很容易就晕了(如下图) ?(2)手动模拟十字链表 在知道了数据结构后手动模拟画出十字链表(十字链表我觉得画都很麻烦,所以一定要先弄懂他是怎么画的再去理解代码可能会更好些)其中起点和弧尾是相同表达意思,终点和弧头是相同表达意思 先画出度 先将每个顶点的firstOut指向以该顶点为弧尾的第一个节点(如a节点,以a节点为弧尾的有b和c,其中a节点的fisrtOut指向以a为起点b为终点的弧节点),而在指向弧节点的4个域中,第4个域tlink,指的是链接弧尾相同的顶点(以a为弧尾b为弧头的弧节点的第4个域指向以a为弧尾c为弧头的弧节点),所以就有如下图: 再画入度? 上面只画出了弧尾的指向,现在画弧头的指向,画法和上面画弧尾指向类似。每个顶点的firstIn指向以该顶点为弧头的第一个节点(如a节点,以a节点为弧头的有c,d, 其中a节点的firstOut指向以c为起点a为终点的弧节点)而在指向弧节点的4个域中,第3个域hlink,指的是链接弧头相同的顶点(以c为弧尾a为弧头的弧节点的第3个域指向以d为弧尾a为弧头的弧节点) 37.2 代码分析(1)java之数组引用
打印输出:
赋值内容:? ?所以让数组b直接指向数组a,(我们就可以理解为将a数组起个别名b,他们指向的是同一个对象,这就类似c语言中的指针)所以当b=a实际上是将a的引用地址赋值给b,所以b改动a也会随之改动。 在代码中这里的tempColumnNodes和headers数组就是引用传递,当修改tempColumnNodes时,headers也会随之改动
(2)十字链表的构造 我觉得十字链表的初始化比之前邻接矩阵和邻接表的初始化都更难,相比领接表容易找到出度,逆邻接表容易找到入度。十字链表即能很容易找到入度也很容易找到出度,所以他的数据结构也复杂一些。结合上面的知识和代码,可以将十字链表的初始化分为两部分,先初始化他的出度的链接,再初始化他入度的链接。 对于初始化出度的链接,判断出度是否为0,可以借助矩阵paraMatrix[i][j] == 0,i行j列表示i是否指向j(即是否以i顶点为弧尾) 对于初始化入度的链接,是遍历每一个头节点所链接的弧节点,使每个弧节点的第三个域去链接弧头相同的节点,其中第一个链接的一定是从头节点出发,其中弧节点的第二个域(即代码中的column)代表的是头节点的位置。如代码中的tempColumnNodes[tempNode.column].nextIn。 链接一个节点后要及时移动位置。感觉这段代码用语言不好描述,一定要图上模拟才更容易理解。
测试: ?结合图画出的十字链表 ?程序运行的结果:
?总结:今天的十字链表我感觉比之前的存储结构都复杂,也花了一些时间去理解,在理解十字链表的过程中,画图很重要,如果直接去看代码可能会很吃力,在今天的代码中对节点入度的初始化,只用了几行代码就实现了,但理解时我还是结合图去理解。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 13:51:16- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |