2015-12-18 1 views
0

Я только начал изучать структуры данных и алгоритмы, и я хочу знать, почему мы делаем классы узлов и связанных списков отдельно, а делаем все в одном классе, например, i didПочему мы делаем класс Node и LinkedList, вместо того, чтобы делать это простым способом, как

class LinkedList():    
    def __init__(self): 
     self.linked=[] 

    def add(self,data): 
     self.linked.append(data) 
     return self.linked 

    def get_size(self): 
     return len(self.linked) 

    def remove(self,data): 
     if data in self.linked: 
      while data in self.linked: 
       z=self.linked.index(data) 
       del self.linked[z] 
       print self.linked 
      return True 
     else: 
      return False 
    def find(self,data): 
     if data in self.linked: 
      return "Found" + " " + str(data) 
     else: 
      return "Not found" + " " + str(data) 

Это из-за пространственной и временной сложности или некоторых других факторов? Еще раз спасибо.

ответ

1

Связанный список означает, что каждый элемент имеет указатель (= ссылка) на следующий элемент в списке. Обычный класс Node хранит этот указатель. Класс LinkedList - это просто оболочка для стандартного списка Python, а не связанного списка.

+0

Спасибо, Робин, но с небольшими изменениями я могу написать новые методы для возврата следующего элемента и предыдущего элемента любого узла. Это плохая практика кодирования для связанного списка или его также приемлемая? – Sam1313

+0

@ Sam1313 Речь идет не о методах, которые предоставляет ваш список, а о том, как он хранит свои данные. Концепция связанного списка состоит в том, чтобы сохранить один элемент с указателем на следующий. По умолчанию списки Python, которые вы используете для хранения данных, являются массивами. Это означает, что они в основном хранят один элемент за другим в непрерывной памяти. Это две совершенно разные концепции. –

+0

Спасибо, Робин, я понял. – Sam1313

Смежные вопросы