首页  >  文章  >  后端开发  >  重新学习 CS 基础知识 - 实施堆栈

重新学习 CS 基础知识 - 实施堆栈

Susan Sarandon
Susan Sarandon原创
2024-10-14 06:17:02448浏览

Relearning Basics of CS - Implementing Stack

我一直在尝试学习一门新的编程语言,还有什么比从基础开始更好的方法呢。在这一系列的文章中,我将尝试使用 Go 实现一个简单的数据结构和算法。 

在 CLRS 的算法简介一书中的基本数据结构章节中,讨论的第一个数据结构是堆栈。

什么是堆栈

堆栈是一种简单的数据结构,用于存储一组项目。堆栈的属性是它允许我们将项目添加到堆栈顶部并从堆栈中删除,因此它遵循后进先出原则或 LIFO。

插入操作称为Push,删除操作称为Pop。由于我们不想弹出空堆栈并处理内存错误,因此我们还实现了对堆栈是否为空的检查。相当简单的数据结构。

下面你可以找到golang中堆栈的实现。使用堆栈的时间复杂度为 O(N),空间复杂度为 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())
}

以上是重新学习 CS 基础知识 - 实施堆栈的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn