Общие методы для структур данных с примерами кода: массивы, связанные списки, стеки, очереди, хеш-таблицы, деревья и графики.

Вот несколько распространенных структур данных и их методов, а также примеры кода:

  1. Массивы:

    • Доступ к элементу: array[index]
    • Вставка элемента: array.push(element)
    • Удаление элемента: array.splice(index, 1)
    • Нахождение длины: array.length
  2. Связанные списки:

    • Вставка узла в начало:
      class Node:
      def __init__(self, data):
         self.data = data
         self.next = None
      def insert_at_beginning(head, data):
      new_node = Node(data)
      new_node.next = head
      return new_node
    • Удаление узла:
      def delete_node(head, key):
      current = head
      # If the key is found in the head node
      if current and current.data == key:
         head = current.next
         current = None
         return head
      # Traverse the linked list to find the key
      prev = None
      while current and current.data != key:
         prev = current
         current = current.next
      # If the key is not present in the linked list
      if current is None:
         return head
      # Remove the node
      prev.next = current.next
      current = None
      return head
  3. Стеки:

    • Отправка элемента: stack.append(element)
    • Извлечение элемента: stack.pop()
    • Проверка того, пуст ли стек: len(stack) == 0
  4. Очереди:

    • Постановка элемента в очередь: queue.append(element)
    • Извлечение элемента из очереди: queue.pop(0)
    • Проверка, пуста ли очередь: len(queue) == 0
  5. Хеш-таблицы:

    • Добавление пары ключ-значение: hash_table[key] = value
    • Доступ к значению по ключу: value = hash_table[key]
    • Удаление пары ключ-значение: del hash_table[key]
  6. Деревья:

    • Вставка узла:
      class Node:
      def __init__(self, data):
         self.data = data
         self.left = None
         self.right = None
      def insert(root, data):
      if root is None:
         return Node(data)
      else:
         if data < root.data:
             root.left = insert(root.left, data)
         else:
             root.right = insert(root.right, data)
      return root
    • Обход дерева (например, обход по порядку):
      def inorder_traversal(root):
      if root:
         inorder_traversal(root.left)
         print(root.data),
         inorder_traversal(root.right)
  7. Графики:

    • Добавление ребра между двумя вершинами: graph[vertex1].append(vertex2)
    • Проверка наличия ребра между двумя вершинами: vertex2 в графе[vertex1]
    • Нахождение соседей вершины: graph[vertex]