帶有兩個類Node和LinkedList的單鏈表很容易實現。然而,我的問題是,當涉及到一個單一鏈接列表只有第一個節點訪問(沒有存儲的長度,沒有最後一個節點的訪問,沒有使用虛擬節點)。特殊的方法,我不能繞到我的頭或找到很多關於在線類似於內置列表操作與O(1)複雜蟒蛇,比如如下:在python中使用特殊方法的單鏈表,被卡住
aa = LinkedList() -- creates empty list
aa.first() -- similar to aa[0]
aa.rest() -- similar to aa[1:]
aa.cons(item) -- similar to aa[item:]
[item] + aa -- similar to aa.insert(0, item)
任何形式的鉛,幫助,指導將不勝感激。出於某種原因,我只是不能將Pythons內置列表操作符解釋爲LinkedList中我自己的方法,而沒有虛擬節點或存儲長度和迭代器。看着它,它似乎就像我很近,但我沒有或找到的東西似乎有所幫助。謝謝。
class Node:
def __init__(self, data=None, next=None):
self.data = data
self.next = next
def getData(self):
return self.data
def getNext(self):
return self.next
def setData(self, newdata):
self.data = newdata
def setNext(self, newnext):
self.next = newnext
def __str__(self):
return str(self.data)
def __repr__(self):
return "Node(%s, %s)" % (repr(self.data), repr(self.next))
def __eq__(self, other):
return self.data == other.data and self.next == other.next
class myList:
def __init__(self):
self.first = Node()
def add(self, data):
newNode = Node() # create a new node
newNode.data = data
newNode.next = self.first # link the new node to the 'previous' node.
self.first = newNode # set the current node to the new one
def first(self):
return self.first.data
def __repr__(self):
plist = []
for i in self:
plist.append(i)
return "LinkedList(%s)" % str(plist)
請發佈您的當前代碼,即使它沒有完全正常工作。 – 2012-04-17 01:53:23
就像我說過的,我不知道我現在在做什麼,我只是需要一個領導。但是繼承了完整的Node類和基本的LinkedList類 – DJXiej 2012-04-17 01:58:24
出於好奇,你是在學習封裝和OO編程的課程嗎?在Python中,當你可以正常執行'node.data = 5'時,執行像'node.setData(5)'這樣的操作有點奇怪。如果你需要控制對它們的訪問,你也可以使用裝飾器來包裝變量。 – 2012-04-17 02:09:55