„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Erlernen der Grundlagen von CS – Implementing Queue

Erlernen der Grundlagen von CS – Implementing Queue

Veröffentlicht am 09.11.2024
Durchsuche:198

Relearning basics of CS - Implementing Queue

Haben Sie schon einmal in einer Warteschlange gestanden? Die Datenstruktur der Warteschlange macht dasselbe. Sie stehen am Ende der Schlange, wenn Sie eine Bestellung aufgeben möchten, vielleicht in Ihrem Lieblings-Selbstbedienungsrestaurant, und dann rücken Sie in der Schlange nach oben und gehen.

Die Warteschlangendatenstruktur in CS führt die gleiche Funktionalität aus. Die Warteschlangendatenstruktur ist eine First-In-First-Out-Datenstruktur. Die Warteschlangendatenstruktur kann mit zwei Grundfunktionen „Enqueue“ und „Dequeue“ erstellt werden, bei denen es sich im Wesentlichen um das Hinzufügen zur Liste und das Entfernen aus der Liste handelt.

Beispiele aus dem wirklichen Leben

In der realen Welt der Informatik bilden Warteschlangen das Rückgrat der folgenden Softwarekomponenten

  • Aufgabenplanung
  • Ereignisbehandlung
  • Asynchrone Kommunikation usw.

Während eine einfache, leicht zu visualisierende Komponente wäre

  1. Eine Warteschlange in der Playlist für die Songs
  2. Eine Warteschlange in der Reihenfolge der über das Netzwerk gesendeten Daten usw.

Durchführung

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 
} 

Komplexität

Zeitkomplexität – O(1) für Enqueue und Dequeue
Raumkomplexität – O(1) für Enqueue und Dequeue

Referenzen

Referenz – https://www.geeksforgeeks.org/queue-in-go-sprache/

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/abinav_athreya_f4b5487056/relearning-basics-of-cs-implementing-queue-54g7?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3