前几天我在做数据结构方面的编程题时,偶然发现:其实人生可以用一个单链表的数据结构来表示,换句话说,人生就是单链表。
学过计算机和编程的人大概都知道单链表这种数据结构。如果用C语言表示的话,所谓单链表,就是用叫做“指针”的概念将许多个数据节点逐个链接起来而形成的一种数据集合,其中的每个数据节点会包含一个指向下一个数据节点的单向指针,也就是说,如果单链表是一条路,那么我们可以按照指针所指的方向从这条路的第一个节点走到第二个节点,再从第二个节点走到第三个节点,以此类推,直到走到最后一个节点。由于指针是单向的,所以我们无法从最后一个节点反方向回到第一个节点。
想想我们的人生,不也是这样吗?如果把我们的一生,划分成一个一个的时空节点的话,那么时间,我们的意愿,还有我们无法掌握的命运,这三者结合在一起,不正好可以充当指针吗?我们在当下的时空活着,经历了一些悲欢离合之后,又将按着指针所指,进入到下一个时空节点中,继续在那个节点中书写我们生活的数据,就这样一步步地走向最后的节点,当我们到达最后节点时,next指针值是NULL,也就是死亡。我们无法返回之前的时空节点重新来过,我们只能这么单方向地一路行走。这,正是单链表结构,或者说,是我们的人生,最让人感到遗憾之处。
单链表,难道就没有显著的优点来平衡它的不足吗?
翻开任何一本讲单链表的书,都会提到这两点:一是其中的数据节点,虽然在逻辑上是按照顺序串联着的,然而在物理的存储空间中,两个逻辑上相邻的节点,却有可能分布在两块完全不搭界的区域里;其二,链表里的节点数目并不像数组那样一开始就定义好了有多少,而是可以动态地变化:可能只有几个,也可能有几百个甚至上千个,并且可以随着需要增加。灵活,是单链表处理数据节点的精髓。
于人生又有什么样的比拟意味呢?那就是说,我们的人生,并不是数组,并没有在一开始就定义好每一步是怎么走的,也并没有规定要一条道儿走到黑;相反,它是单链表,人生的下一个时空节点会落在哪块“存储区域”内,会写入什么样的数据,人生到底又有多少个时空节点,并没有定数,所有这些未知,取决于我们的愿望,潜力,努力,当然,还有运气以及寿命。虽然我们无法反向地回到之前的节点,但是我们可以好好把握当下的节点,充分筹划下一个节点,即使它们之间可能相隔很远。所以,如果一个艺术家想转行从事科技工作,或是一个工程师想尝试写小说,为什么不试试呢?也许,当前的指针会让我们跳达一个之前从来没有体验过的、内容丰富多彩的节点呢。即使选择沿着原先的道路继续前行,我们也可以努力延长未来之路,努力在每个经历过的人生节点中描绘出更加美丽的生活图景。从这个角度讲,人生蕴含着与单链表结构相似的灵活性,蕴藏着无限的可能性,等待着每一个用心生活的人去慢慢拓展。这,大概正是人生让我们着迷的地方吧。
人生,就是单链表。
心里闪过这最后一句后,我埋下头,继续用功。
2016-5-11