NodeとLinkedListの2つのクラスを持つ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)
リードの任意の並べ替え、助けて、次のような特別な方法は、私は、周りに私の頭をラップまたはオンラインについて多くの組み込みのリスト操作O(1)複雑でニシキヘビと類似している見つけることができません指導は非常に高く評価されるだろう。何らかの理由で私はピットトン組み込みのリスト演算子を、ダミーノードや記憶された長さとイテレータを持たない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)
完全に機能していなくても、現在のコードを投稿してください。 –
私が言ったように、私はこの時点で何をしているのか分からず、ただリードが必要です。しかし、完全なNodeクラスと基本的なLinkedListクラス – DJXiej
ちょうど好奇心の外に、カプセル化とオブジェクト指向プログラミングを研究しているクラスにいますか? Pythonでは、 'node.data = 5'を普通に行うことができるときに' node.setData(5) 'のようなことをするのはちょっと奇妙です。変数へのアクセスを制御する必要がある場合は、デコレータを使用して変数をラップすることもできます。 –