我必须创建一个向左侧添加自己的链接列表,以便我认为它是这样的,其中框是节点,箭头是链接:
tail [] <- [] <- [] <- ... [] head
但是,在添加第二个节点时,如何确定链表的方向? 你怎么知道它将被放置在哪一方?
2nd? 1st 2nd?
[] [] []
例如这段代码:head = new IntNode(5,head)
如果链接列表是这样的话会添加到右边:
head tail
[] -> [] -> [] -> []
但是只有在添加到已经制作的具有该格式的列表时才会这样,那么在创建新链接列表时它会从哪一侧开始?
答案 0 :(得分:2)
嗯,链接列表没有left
和right
。
该方向仅用于方便的图形表示,因为我们可以轻松地对其进行描绘。从技术上讲,您可以横向绘制链接列表,从上到下,从下到上,从左到右,并不重要。
所有链接列表都是从头到尾的单向。或者在双重链表的情况下,从头到尾和从头到尾的双向。
我想你可以从技术上制作一个双向链表,其中所有"left"
或"prev"
指针都是null
,以使它看起来像是正确的。或者制作所有"right"
或"next"
指针null
并使它看起来像是左转。在任何一种情况下,这种方向都没有实际意义。
在内存中,链接列表节点的Node.next
值仅包含下一个节点的内存地址。该内存位置不必在物理上恰好位于节点旁边。从技术上讲,链接列表指针可以在整个内存中进行锯齿形连接,在OS和底层系统决定为它们分配内存的地方连接块。没有&#34; 自然&#34;像我们在现实生活中习惯的顺序,从头到尾的指针序列
例如,就计算机而言,这两个列表是等效的。我只是朝不同的方向画了它们:)