Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk melaksanakan baris gilir menggunakan Golang
Golang ialah bahasa pengaturcaraan yang sangat popular Salah satu kelebihannya ialah ia boleh melaksanakan banyak struktur data dan algoritma dengan sintaks yang mudah. Sebagai struktur data biasa, baris gilir juga mempunyai pelaksanaan yang sangat mudah dan mudah digunakan di Golang.
Jadi, bagaimana untuk melaksanakan baris gilir menggunakan Golang? Di bawah ini kami akan memperkenalkan pelaksanaan baris gilir berasaskan tatasusunan.
Pertama, kita perlu mentakrifkan struktur untuk mewakili baris gilir:
type Queue struct { queue []interface{} front int rear int }
di mana, queue
ialah tatasusunan yang digunakan untuk menyimpan elemen dalam baris gilir, front
dan rear
masing-masing Menunjukkan indeks kepala dan ekor barisan.
Seterusnya, kita boleh mentakrifkan beberapa kaedah operasi asas baris gilir:
func (q *Queue) Enqueue(item interface{}) { q.queue = append(q.queue, item) q.rear++ }
Dalam kaedah ini, kami Menambah elemen ke penghujung baris gilir melalui kaedah append
dan tambah nilai rear
sebanyak 1.
func (q *Queue) Dequeue() interface{} { if q.front == q.rear { return nil } item := q.queue[q.front] q.front++ return item }
Dalam kaedah ini, kita mula-mula menentukan sama ada baris gilir kosong, iaitu sama ada front
dan rear
adalah sama. Jika kosong, kembalikan nil
terus, jika tidak, keluarkan elemen kepala dan tambah 1 pada nilai front
.
func (q *Queue) Peek() interface{} { if q.front == q.rear { return nil } return q.queue[q.front] }
Dalam kaedah ini, kita juga perlu menentukan sama ada baris gilir kosong dan kemudian mengembalikan elemen kepala.
func (q *Queue) IsEmpty() bool { return q.front == q.rear }
Kaedah ini sangat mudah, anda hanya perlu tentukan sama ada kepala dan ekor baris gilir adalah sama.
func (q *Queue) Size() int { return q.rear - q.front }
Kaedah ini juga sangat mudah anda hanya perlu mengira perbezaan antara rear
dan front
.
Menggunakan struktur dan kaedah yang ditakrifkan di atas, kami boleh melaksanakan baris gilir berasaskan tatasusunan. Berikut ialah contoh program lengkap:
type Queue struct { queue []interface{} front int rear int } func (q *Queue) Enqueue(item interface{}) { q.queue = append(q.queue, item) q.rear++ } func (q *Queue) Dequeue() interface{} { if q.front == q.rear { return nil } item := q.queue[q.front] q.front++ return item } func (q *Queue) Peek() interface{} { if q.front == q.rear { return nil } return q.queue[q.front] } func (q *Queue) IsEmpty() bool { return q.front == q.rear } func (q *Queue) Size() int { return q.rear - q.front } func main() { q := &Queue{} q.Enqueue(1) q.Enqueue(2) q.Enqueue(3) fmt.Println(q.Size()) fmt.Println(q.Peek()) fmt.Println(q.Dequeue()) fmt.Println(q.IsEmpty()) }
Melalui program di atas, kita dapat melihat bahawa pelaksanaan baris gilir berasaskan tatasusunan adalah sangat mudah dan mudah untuk digunakan, dan juga boleh digunakan pada banyak senario. Sama ada ia digunakan sebagai struktur data tambahan dalam algoritma atau untuk melaksanakan fungsi baris gilir dalam aplikasi sebenar, Golang boleh memberikan sokongan yang sangat mudah.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan baris gilir menggunakan Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!