簡體   English   中英

Python 3插入到雙向鏈接列表中

[英]Python 3 Inserting Into a Doubly Linked List

剛開始,這是家庭作業,所以我只是在這里尋找提示。 一般而言,我對Python和編程還很陌生。 我應該實現一個雙向鏈接的基於游標的列表。 我在插入列表時遇到了一些麻煩。 我的講師提供了一個簡單的Node類和Node2Way類。 他還提供了init方法:

from node import Node

class Node2Way(Node):
    def __init__(self,initdata):
        Node.__init__(self,initdata)
        self.previous = None

    def getPrevious(self):
        return self.previous

    def setPrevious(self,newprevious):
        self.previous = newprevious

這是到目前為止我所擁有的(只是相關方法):

from node2way import Node2Way

class CursorBasedList(object):
    """ Linked implementation of a positional list."""

    def __init__(self):
        """ Creates an empty cursor-based list."""
        self._header = Node2Way(None)
        self._trailer = Node2Way(None)
        self._trailer.setPrevious(self._header)
        self._header.setNext(self._trailer)
        self._current = None
        self._size = 0

def insertAfter(self, item):
        """Inserts item after the current item, or
        as the only item if the list is empty.  The new item is the
        current item."""
        temp = Node2Way(item)
        if self.isEmpty():
            self._header.setNext(temp)
            self._trailer.setPrevious(temp)
        else:
            temp.setNext(self._current.getNext())
            self._current.setNext(temp)
            temp.setPrevious(self._current)
        self._current = temp
        self._size+=1

當我測試出insertAfter方法時,它可以用於添加第一項,但是當我嘗試添加第二項時,它說self._current是None類型,不能使用getNext方法。 我不知道是否有另一種方法可以使temp在當前節點之后引用該節點。 我不確定自己在做什么錯,或者即使我做錯了什么。 我認為,一旦我正確使用insertAfter方法,就可以使用insertBefore方法。

任何提示將不勝感激。 先感謝您! :)

如果是

    if self.isEmpty():
        self._header.setNext(temp)
        self._trailer.setPrevious(temp)

您永遠不會設置temp的上一個和下一個節點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM