我知道这可能是一个非常少年的问题,但我正在学习C#中的链表,并且他们不断引用节点,我在直观的层面上对它有所了解,但我从来没有得到关于节点究竟是什么的正式解释是,特别是在这种情况下,有人可以给我一个关于中等简单英语节点定义的概述吗?
我读过这个:https://msdn.microsoft.com/en-us/library/microsoft.computecluster.node(v=vs.85).aspx但它没有多大帮助,因为它使用了其他概念/行话我还不太明白.
谢谢!
获得白板.
画一堆盒子.
用线连接它们.
也许在盒子和线条上放一些标签.
也许在线上放一些箭头.
你绘制的内容称为"图形".图形由节点(框)和将它们连接在一起的边组成.节点有时也称为"顶点".
几乎表示数据的每个问题都会减少到某种图形.
你想找到城市之间的最佳路线吗?制作一个图表,其中节点是城市,边缘是道路,问题是"这两个节点之间边缘的最短路径是什么?"
您想设计一个数据中心吗?将其设计为图形,其中节点是计算机,边缘是连接它们的网络电缆.
等等.
链表只是一个非常非常非常简单的图表.链表只是一个图表,其中:
所以
1 ---> 2 ----> 3 ----> empty
Run Code Online (Sandbox Code Playgroud)
是一个链接列表,其中1,2,3,空是节点,边缘由箭头表示.请注意,这符合链表的定义; empty没有传出箭头,1没有传入箭头,每个其他节点有一个传出箭头和一个传入箭头.
现在想象一下放宽链表的条件.
一个非循环图,其中只有一个节点具有零输入边(称为根),而每个其他节点只有一个输入边称为"树".每个链表都是一棵树,但不是每棵树都是一个链表:
1
/ \
| |
v v
2 3
Run Code Online (Sandbox Code Playgroud)
这是一棵树,但不是一个链表.
如果我们考虑没有周期的图,但也没有限制我们可以添加的边,那么我们有一个有向无环图或DAG.每棵树都是DAG; 不是每个DAG都是树.例如:
1 2 ---> 3 <---- 4
Run Code Online (Sandbox Code Playgroud)
是DAG,但不是链表或树.
等等.图论是一个巨大的学科,是计算机科学的基础.就像我说的那样,表示数据的几乎所有问题都可以被视为某种图形,因此"节点"的概念在编程中无处不在.