Node と LinkedList の 2 つのクラスを持つ単一リンク リストは、簡単に実装できます。ただし、私の問題は、最初のノード アクセスのみ (保存された長さなし、最後のノード アクセスなし、ダミー ノードを使用しない) の単一リンク リストの場合です。私が頭を抱えたり、オンラインについて多くを見つけることができない特別なメソッドは、次のような 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)
あらゆる種類のリード、ヘルプ、ガイダンスをいただければ幸いです。何らかの理由で、ダミーノードまたは格納された長さとイテレータなしで、Python の組み込みリスト演算子を 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)