Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mempelajari Semula Asas CS - Melaksanakan Tindanan

Mempelajari Semula Asas CS - Melaksanakan Tindanan

Susan Sarandon
Susan Sarandonasal
2024-10-14 06:17:02448semak imbas

Relearning Basics of CS - Implementing Stack

Saya telah cuba mempelajari bahasa pengaturcaraan baharu dan cara yang lebih baik untuk melakukannya daripada bermula dari asas. Dalam siri siaran yang datang ini, saya akan cuba melaksanakan struktur Data dan algoritma yang mudah menggunakan Go. 

Dalam buku An Introduction to algorithms By CLRS dalam bab Elementary data structure struktur data pertama yang diperkatakan ialah timbunan.

Apa itu Stack

Timbunan ialah struktur data ringkas yang digunakan untuk menyimpan satu set item. Sifat tindanan ialah ia membolehkan kita menambah item pada bahagian atas tindanan dan mengeluarkan daripada tindanan supaya ia mengikut prinsip Keluar Dahulu Terakhir atau LIFO.

Operasi sisipan dipanggil Tekan dan operasi keluarkan dipanggil Pop. Memandangkan kami tidak mahu mempunyai tindanan pop kosong dan menangani ralat memori, kami juga melaksanakan semakan sama ada Tindanan kosong atau tidak. Struktur data yang agak mudah.

Di bawah anda boleh menemui pelaksanaan tindanan dalam golang. Kerumitan masa ialah O(N) dan kerumitan ruang menggunakan tindanan ialah O(1)

package main

import "fmt"

type Stack []int

func (stack *Stack) Push (value int){
    *stack = append(*stack, value)
}

func (stack *Stack) Pop () int{
    if stack.IsEmpty() {
        return 0
    }
    top := (*stack)[len(*stack)-1]
    *stack = (*stack)[:len(*stack)-1]
    return top
}

func (stack *Stack) IsEmpty() bool{
    return len(*stack) == 0
}


func main(){
    st := Stack{}
    st.Push(1)
    st.Push(2)
    fmt.Println(st.Pop())
}

Atas ialah kandungan terperinci Mempelajari Semula Asas CS - Melaksanakan Tindanan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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