2017-09-04 6 views
2

をこれは私のノードされて機能していない:PythonのLinkedListのサイズ/削除機能が

class Node(object): 
    def __init__(self, data, next = None): 
     self.data = data 
     self.next_node = next 

    def get_next(self): 
     return self.next_node 

    def set_next(self, next): 
     self.next_node = next 

    def get_data(self): 
     return self.data 

    def set_data(self): 
     self.data = data 

そして、これはLinkedListのそのものです:

class LinkedList(object): 
    def __init__(self, root = None): 
     self.root = root 
     self.size = 0 

    def size(self): 
     return self.size 

    def insert(self, data): 
     new_node = Node (data, self.root) 
     self.root = new_node 
     self.size += 1 

    def delete(self, data): 
     this_node = self.root 
     prev_node = None 
     while this_node: 
     if this_node.get_data() == data: 
      if prev_node: 
      prev_node.set_next(this_node.get_next()) 
      else: 
      self.root = this_node 
      self.size -= 1 
      return True 
     else: 
      prev_node = this_node 
      this_node = this_node.get_next() 
     return False 

    def search(self, data): 
     this_node = self.root 
     while this_node: 
     if this_node.get_data() == data: 
      return data 
     else: 
      self.root = this_node.get_next() 
     return None 

    def printLL(self): 
     this_node = self.root 
     while this_node: 
     print(this_node.data) 
     this_node = this_node.get_next() 

最後に、これらは私が行ってるテストです。

ll = LinkedList() 
ll.insert(1) 
ll.insert(2) 
ll.printLL() 
ll.delete(2) 
ll.printLL() 
if ll.search(2): 
    print("Value 2 found") 
else: 
    print("Value 2 not found") 
if ll.search(1): 
    print("Value 1 found") 
else: 
    print("Value 1 not found") 
ll.insert(4) 
ll.printLL() 
print(str(ll.size())) 
私は現在、この出力取得しています

2 
1 
2 
1 
Value 2 found 
Value 1 not found 
4 
1 
Traceback (most recent call last): 
    File "C:\Users\ErikIngvoldsen\Documents\Python Code\TestCode.py", line 71, in <module> 
    print(str(ll.size())) 
TypeError: 'int' object is not callable 

オブジェクトが呼び出し不能なのはなぜですか?また、なぜ私の削除機能が働いていないのですか?参考までに、これは私の出力がどのように見えるかされています

2 1 
1 
Value 2 not found 
Value 1 found 
4 1 
2 

書式設定の問題もありますが、今の私は、これが正常に動作し得ることに焦点を当てます。

答えて

0

sizeは、linkedlistクラスのメソッドではなく、インスタンス変数です。変数を呼び出すことはできません。これはエラーです。 print(str(ll.size()))の代わりにprint(str(ll.size))

+0

正確には何ですか? print(str(ll.size()))を呼び出している間、これが動作する方法はありますか? – Zevvysan

+0

変数を呼び出すことはできません。これまでに "()"を使用している場合は、関数を実行することを期待していることを意味します。関数に関する基本的なPythonチュートリアルを取るだけで、正しく理解できると思います。 –