私のように生成された単独リンクリストがあるとします。単独リンクリストからインデックス値を取得することはできますか?
# Singly Linked List
class node:
def __init__(self,data=None):
self.data=data
self.next=None
class linked_list:
def __init__(self):
self.head=node()
# Adds new node containing 'data' to the end of the linked list.
def append(self,data):
new_node=node(data)
cur=self.head
while cur.next!=None:
cur=cur.next
cur.next=new_node
# Returns the length (integer) of the linked list.
def length(self):
cur=self.head
total=0
while cur.next!=None:
total+=1
cur=cur.next
return total
# Prints out the linked list in traditional Python list format.
def display(self):
elems=[]
cur_node=self.head
while cur_node.next!=None:
cur_node=cur_node.next
elems.append(cur_node.data)
print elems
# Returns the value of the node at 'index'.
def get(self,index):
if index>=self.length():
print "ERROR: 'Get' Index out of range!"
return None
cur_idx=0
cur_node=self.head
while True:
cur_node=cur_node.next
if cur_idx==index: return cur_node.data
cur_idx+=1
# Deletes the node at index 'index'.
def erase(self,index):
if index>=self.length():
print "ERROR: 'Erase' Index out of range!"
return
cur_idx=0
cur_node=self.head
while True:
last_node=cur_node
cur_node=cur_node.next
if cur_idx==index:
last_node.next=cur_node.next
return
cur_idx+=1
#Allows for bracket operator syntax (i.e. a[0] to return first item).
def __getitem__(self,index):
return self.get(index)
def getindex(self,data):
cur_node = self.data
while True:
cur_node = cur_node.next
if cur_node == data:
return cur_node.index
break
index +=1
をとして、私は単独でリンクリストを作成するとします。
new_list = linked_list()
new_list.append(5)
new_list.append(6)
new_list.append(8)
がインデックス1(Iは、リスト内の2番目の値を削除するとします)は6という値になりますが、6のインデックスは何か分かりません。インデックス値6を見つけて6を削除するにはどうしたらいいですか?または、インデックス値を知らなくても単一リンクリストから値を削除する別の方法がありますか?
EDIT:
はAttributeError:「NoneType」オブジェクトが属性「次へ」を持っていない私は、ノードが指定されているが、私はこのエラーを得ているとき、理論的にインデックスをつかむ必要がありますgetindexと呼ばれる新しいモジュールを追加しました。 getindexモジュールのcur_node = cur_node.next行を参照します。このエラーを修正するにはどうすればよいですか?
。 –
@ Q.Holnessインデックスを表すためにノードに属性を追加するにはどうすればよいですか? – superasiantomtom95
'get'関数では' data'を返す代わりに 'index'を返すのではなく、' index' compare 'data'を比較するのではなく、ほとんど準備ができています。 – scope