Вы когда-нибудь стояли в очереди? Структура данных очереди делает то же самое. Вы стоите в конце очереди, когда хотите разместить заказ, например, в своем любимом ресторане самообслуживания, а затем продвигаетесь вверх по очереди и уходите.
Структура данных очереди в CS выполняет ту же функциональность. Структура данных очереди представляет собой структуру данных «первым пришел — первым обслужен». Структура данных очереди может быть построена с помощью двух основных функций Enqueue и Dequeue, которые, по сути, добавляют в список и удаляют из него.
В реальном мире информатики очереди составляют основу следующих программных компонентов
Хотя простым и понятным компонентом будет
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/
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3