2014-09-21 15 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