Автор оригинала: Pankaj Kumar.
Двухсторонняя очередь в Python
Двухсторонняя очередь – это структура данных, которая используется для хранения коллекции элементов, которые должны быть в очереди. Это расширение структуры данных очереди с некоторыми дополнительными функциями.
Предварительная необходимость: очередь
Очередь является структурой данных, которая используется для хранения набора предметов в способе реальной очереди. В реальной очереди люди обычно входят из спины и выход спереди после того, как они продвигаются через очередь. Это называется первой первой процедурой.
Структура данных очереди – это аналогичный реализованный список, в котором все данные вводятся в конце списка, и все данные удаляются в начале списка.
Рекомендуется прочитать – Вдвойне круговые связанные списки в Python
Реализация двойной очереди в Python
В режиме двойной очереди, как указано имя, данные могут быть добавлены и удалены спереди, а также сзади, но данные не могут быть добавлены или удалены в середине очереди. Двойные очереди также называются деквизами.
Теперь мы увидим его реализацию в Python. Мы не будем использовать встроенные Коллекции
Пакет, вместо этого мы будем реализовывать это сами.
Класс: дел
class Deque: def __init__(self): self.queue = [] self.count = 0 def __repr__(self): str = "" if self.count == 0: str += "Double Ended Queue Empty." return str str += "Double Ended Queue:\n" + self.queue.__repr__() return str def insert_start(self, data): if self.count == 0: self.queue = [data,] self.count = 1 return self.queue.insert(0, data) self.count += 1 return def insert_end(self, data): if self.count == 0: self.queue = [data,] self.count = 1 return self.queue.append(data) self.count += 1 return def remove_start(self): if self.count == 0: raise ValueError("Invalid Operation") x = self.queue.pop(0) self.count -= 1 return x def remove_end(self): if self.count == 0: raise ValueError("Invalid Operation") x = self.queue.pop() self.count -= 1 return x def get(self, index): if index >= self.count | index < 0: raise ValueError("Index out of range.") return self.queue[index] def size(self): return self.count def display(self): print(self) return
Это код для двойной очереди. Есть много методов, давайте обсудим их один за другим.
1. Методы __init__ и __repr__
В __init__
Метод, мы объявляем список с именем очередь
Это будет содержать DECE и счетчик для подсчета количества элементов в списке.
В __repr__
Метод, мы создаем строку, которая будет использоваться для распечатки двухсторонней очереди.
2. Методы INSERT_START и INSERT_END
В insert_start
Метод, мы просто вставляем новый элемент на индекс 0
списка очередь
и мы увеличиваем количество предметов в списке.
В insert_end
Метод, мы просто добавляем новый элемент в списке очередь
и мы увеличиваем количество предметов в списке.
3. Способы letim_Start и Remove_end
В Remove_Start
Метод, мы проверяем, если список пуст, и если так, то мы поднимаем ValueError
Отказ После этого мы попметим товар по индексу 0
, уменьшение Считать
и верните изложенный пункт.
В Remove_end
Способ тоже, мы проверяем, будет ли список пустым, и если так, то мы поднимаем ValueError
Отказ После этого мы попмеем предмет в конце списка, уменьшают Считать
и верните изложенный пункт.
4. Методы получения, размера и отображения
В получить
Метод, мы возвращаем элемент по указанному индексу. Если указанный индекс вне диапазона, то мы поднимаем ValueError
Отказ
В Размер
Метод, мы просто возвращаем Считать
который содержит количество элементов в списке.
И в Дисплей
Метод, мы распечатаем ДУК.
Выход
Давайте увидим вывод кода:
Заключение
В этом уроке мы увидели, как создать двустороннюю очередь, мы реализовали его в Python, и мы увидели, что это вывод. Надеюсь, вам было весело учиться и увидимся в следующем руководстве.