Рубрики
Без рубрики

Двухсторонняя очередь в Python

Двухсторонняя очередь – это структура данных, которая используется для хранения коллекции элементов, которые должны быть в очереди. Это расширение данных очереди

Автор оригинала: 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, и мы увидели, что это вывод. Надеюсь, вам было весело учиться и увидимся в следующем руководстве.