Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Код лаб / LinkedList

.py
Скачиваний:
0
Добавлен:
28.12.2024
Размер:
2.67 Кб
Скачать
class LinkedList():

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

  def size(self):
    if self.head is None:
      return 0
    else:
      node = self.head
      count = 1
      while node.next:
        count += 1
        node = node.next
    return count

  def isEmpty(self):
    if self.head:
      return True
    else:
      return False

  def add(self, data):
    if self.head is None:
      self.head = self.Node(data)
    else:
      node = self.head
      while node.next:
        node = node.next
      node.next = self.Node(data)
  
  def list_out(self):
    if self.head is None:
      print(None)
    else:
      node = self.head
      print(self.head)
      while node.next:
        print(node.data)
        node = node.next
      print(node.data)

  def set(self, index, element): 
    if index not in (0, self.size()):
      print("Index out of range")
      return 
    node = self.head
    for i in range(0, index):
      node = node.next
    node.data = element

  def get(self, index): 
    if index not in (0, self.size()):
      print("Index is out of range")
      return
    node = self.head
    i = 0
    while i < index:
      node = node.next
      i += 1
    return node.data
    
  def contains(self, element):
    node = self.head
    size = self.size()
    index = 0
    if node is None:
      return -1
    else:
      while index < size:
        if node.data == element:
          return True
        index += 1
        node = node.next
      return -1
    
  def indexOf(self, element):
    node = self.head
    size = self.size()
    index = 0
    if node is None:
      return -1
    else:
      while index < size:
        if node.data == element:
          return index
        index += 1
        node = node.next
      return -1
      
  def remove_index(self, index):
    if self.head is None:
      print("List is empty")
      return
    if index == 0:
      self.head = self.head.next

    else:
      node = self.head
      i = 0
      prev_node = node
      while i < index:
        prev_node = node
        node = node.next
        i+=1
      prev_node.next = node.next
      del node
      
  def remove_element(self, element):
    if self.head is None:
      print("List is empty")
      return
    index = self.indexOf(element)
    if index == 0:
      self.head = self.head.next
    else:
      node = self.head
      i = 0
      prev_node = node
      while i < index:
        prev_node = node
        node = node.next
        i+=1
      prev_node.next = node.next
      del node

  def clear(self):
    self.head = None
Соседние файлы в папке Код лаб