«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Повторное изучение основ CS — реализация очереди

Повторное изучение основ CS — реализация очереди

Опубликовано 9 ноября 2024 г.
Просматривать:988

Relearning basics of CS - Implementing Queue

Вы когда-нибудь стояли в очереди? Структура данных очереди делает то же самое. Вы стоите в конце очереди, когда хотите разместить заказ, например, в своем любимом ресторане самообслуживания, а затем продвигаетесь вверх по очереди и уходите.

Структура данных очереди в CS выполняет ту же функциональность. Структура данных очереди представляет собой структуру данных «первым пришел — первым обслужен». Структура данных очереди может быть построена с помощью двух основных функций Enqueue и Dequeue, которые, по сути, добавляют в список и удаляют из него.

Примеры из реальной жизни

В реальном мире информатики очереди составляют основу следующих программных компонентов

  • Планирование задач
  • Обработка событий
  • Асинхронная связь и т. д.

Хотя простым и понятным компонентом будет

  1. Очередь в плейлисте для песен
  2. Очередь в порядке отправки данных по сети и т. д.

Выполнение

package main

import (
    "fmt"
    "errors"
)

type Queue struct{
    Elements []int
    Size int
}

func (q *Queue) Enqueue(value int){
    if q.GetLength() == q.Size { 
        fmt.Println("Overflow") 
        return
    } 
    q.Elements = append(q.Elements, value) 
}

func (q *Queue) Dequeue() int {
    if q.IsEmpty() { 
        fmt.Println("UnderFlow") 
        return 0
    } 
    element := q.Elements[0] 
    if q.GetLength() == 1 { 
        q.Elements = nil 
        return element 
    } 
    q.Elements = q.Elements[1:] 
    return element
}

func (q *Queue) GetLength() int { 
    return len(q.Elements) 
} 

func (q *Queue) IsEmpty() bool { 
    return len(q.Elements) == 0
} 

func (q *Queue) Peek() (int, error) { 
    if q.IsEmpty() { 
        return 0, errors.New("empty queue") 
    } 
    return q.Elements[0], nil 
} 

Сложность

Временная сложность — O(1) для постановки в очередь и удаления из очереди
Пространственная сложность — O(1) для постановки в очередь и удаления из очереди

Ссылки

Ссылка - https://www.geeksforgeeks.org/queue-in-go-language/

Заявление о выпуске Эта статья воспроизводится по адресу: https://dev.to/abinav_athreya_f4b5487056/relearning-basics-of-cs-implement-queue-54g7?
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3