Rumah > pembangunan bahagian belakang > Golang > Mempelajari semula asas CS - Melaksanakan Baris Gilir

Mempelajari semula asas CS - Melaksanakan Baris Gilir

Patricia Arquette
Lepaskan: 2024-10-16 06:10:30
asal
509 orang telah melayarinya

Relearning basics of CS - Implementing Queue

Pernahkah anda berdiri dalam baris gilir, Struktur data baris gilir juga melakukan perkara yang sama. Anda berdiri di penghujung barisan apabila anda ingin membuat pesanan mungkin di restoran layan diri kegemaran anda dan kemudian anda naik ke baris gilir dan pergi.

Struktur data Baris Gilir dalam CS melaksanakan fungsi yang sama. Struktur Data Gilir ialah struktur data Mula-mula Keluar Dahulu. Struktur Data Gilir boleh dibina dengan dua fungsi asas Enqueue dan Dequeue yang pada asasnya menambah senarai dan mengalih keluar daripada senarai.

Contoh kehidupan sebenar

Dalam dunia sebenar sains komputer Barisan gilir membentuk tulang belakang komponen perisian berikut

  • Penjadualan tugas
  • Pengendalian acara
  • Komunikasi tak segerak dsb

Walaupun komponen mudah untuk divisualisasikan ialah

  1. Baris gilir dalam senarai main untuk lagu
  2. Baris gilir mengikut susunan data yang dihantar merentasi rangkaian dll

Perlaksanaan

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 
} 
Salin selepas log masuk

Kerumitan

Kerumitan Masa - O(1) untuk Enqueue dan Dequeue
Kerumitan ruang - O(1) untuk Enqueue dan Dequeue

Rujukan

Rujukan - https://www.geeksforgeeks.org/queue-in-go-language/

Atas ialah kandungan terperinci Mempelajari semula asas CS - Melaksanakan Baris Gilir. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan