2014-09-21 20 views
1

我必须做出一个链表,增加了自己的左边,这样即时通讯思想是这样的,其中框是节点和箭头是链接一个链接列表的方向:如何确定

tail [] <- [] <- [] <- ... [] head 

但是,如何在添加第二个节点时确定链表的方向? 你怎么知道它将被放置在哪一边?

​​

例如验证码:头=新IntNode(5头)
将添加到右侧,如果链表是这样的:

  head   tail 
    [] -> [] -> [] -> [] 

但是,添加到时只有已经使用该格式制作了列表,那么创建新链接列表时将从哪一方开始?

+2

这有点像问一个家庭树是否去向上或向下。传统上它是以父母为中心绘制的,但不一定是:只要结构相同,就可以随意绘制。我猜想,链接列表通常在左边,右边是尾巴;但那只是因为大多数语言都是从左到右阅读。这不是链接列表的内在属性。 – 2014-09-21 18:52:28

回答

2

那么没有leftright与链表。

该方向仅用于方便的图形表示,因为我们可以轻松地对其进行描述。你可以从技术上绘制链接列表,从头到尾,从头到尾,从左到右,并不重要。

所有链表都有一个单向从头到尾。或者在双向链表的情况下,从头到尾以及从尾到头双向的

我想你可以在技术上做一个双向链表,其中所有"left""prev"指针是null使它看起来像它是正确的。或者使其全部"right""next"指针null,并使其看起来像它左侧。无论哪种情况,这样的方向都没有实际意义。

"left""right"只是约定为更容易的链接列表的图形显示。

在内存中,链表节点的Node.next的值只包含下一个节点的内存地址。该内存位置不必紧靠该节点。从技术上讲,链接列表指针可以在整个内存中形成锯齿形,将操作系统和底层系统决定为其分配内存的任何地方连接到块。有没有“自然”为了像我们习惯在现实生活中,从头部指针到尾

例如只是序列,这两个列表是等价至于电脑而言。我只是画了他们在不同的方向:)

linked lists

+0

大声笑,一个链表的方向应该只能通过它的头尾方向来确定。感谢我应该更多地思考它,答案就像在我面前。 – reifi 2014-09-21 19:17:31

+0

@reifi欢迎:) – nem035 2014-09-21 20:44:27