>  기사  >  백엔드 개발  >  골랭 스택 구현

골랭 스택 구현

王林
王林원래의
2023-05-21 15:10:07541검색

Golang은 상대적으로 새로운 프로그래밍 언어이며 효율성과 동시성으로 인해 점점 인기가 높아지는 프로그래밍 언어입니다. Golang에는 다양한 데이터 구조와 알고리즘을 포함하는 강력한 표준 라이브러리가 있으며 그 중 하나가 스택입니다.

스택은 프로그램에서 데이터를 저장하고 조작하는 데 사용할 수 있는 데이터 구조입니다. 이는 접시를 쌓아 올리는 것과 비슷합니다. 상단에 접시를 추가하거나 상단에서 접시를 제거할 수 있습니다. 이 데이터 구조는 일반적으로 "LIFO(후입선출)" 원칙을 따릅니다. 즉, 스택에 마지막으로 추가한 요소가 먼저 팝됩니다.

Golang에서는 Slice를 사용하여 스택을 구현할 수 있습니다. 다음으로 Golang에서 기본 스택을 구현하는 방법을 보여드리겠습니다.

먼저 아래와 같이 스택 구조를 선언해야 합니다.

type Stack struct {
    items []int //用于存储栈中的元素
}

여기서 items는 스택에 요소를 저장하는 데 사용하는 슬라이스입니다. 이 슬라이스를 사용하여 스택에서 다양한 작업을 구현할 수 있습니다.

다음으로, 아래와 같이 스택에 요소를 추가하는 방법(Push)을 구현해야 합니다.

func (s *Stack) Push(item int) {
    s.items = append(s.items, item) //将元素添加到切片的末尾
}

함수에서는 내장된 추가 기능을 사용하여 들어오는 요소를 슬라이스 끝에 추가합니다. .

다음으로 아래와 같이 스택에서 요소를 제거하는 방법(Pop)을 구현해야 합니다.

func (s *Stack) Pop() int {
    length := len(s.items) - 1    //获取栈中元素数量
    lastItem := s.items[length]   //获取栈顶元素
    s.items = s.items[:length]    //从切片中删除栈顶元素
    return lastItem                //返回栈顶元素
}

함수에서는 먼저 슬라이스의 마지막 요소(즉, 스택의 최상위 요소)를 가져옵니다. 그런 다음 슬라이스의 Slicing 속성을 사용하면 슬라이스에서 요소가 제거됩니다. 마지막으로 스택의 최상위 요소를 호출 부분에 반환합니다.

다음으로, 아래와 같이 스택의 최상위 요소를 가져오는 메서드(Peek)를 구현해야 합니다.

func (s *Stack) Peek() int {
    return s.items[len(s.items)-1]   //返回栈顶元素
}

함수에서는 len(s.items)-1을 사용하여 최상위 요소의 첨자를 가져옵니다. 슬라이싱의 마지막 요소의 첨자는 항상 len(s.items)-1이기 때문에 스택의 요소입니다.

마지막으로 아래와 같이 스택이 비어 있는지(IsEmpty) 확인하는 메서드를 구현해야 합니다.

func (s *Stack) IsEmpty() bool {
    return len(s.items) == 0    //判断栈中是否有元素
}

함수에서는 len(s.items)을 사용하여 스택의 요소 수를 확인합니다. 스택에 요소가 없으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

이제 기본 Golang 스택 구현이 완료되었습니다. 다음 예제 코드에서는 Golang의 기본 함수를 사용하여 스택의 기능을 테스트합니다.

func main() {
    myStack := Stack{}    //初始化一个栈
    
    myStack.Push(23)     //向栈中添加元素
    myStack.Push(45)
    myStack.Push(67)
    
    fmt.Println("栈顶元素为:", myStack.Peek())     //获取栈顶元素
    
    fmt.Println("弹出:", myStack.Pop())      //从栈中弹出元素
    fmt.Println("栈是否为空?", myStack.IsEmpty())    //检查栈是否为空

}

이 코드에서는 먼저 스택을 초기화한 다음 스택에 세 개의 요소(23, 45, 67)를 추가합니다. 다음으로 Peek 메서드를 사용하여 스택의 최상위 요소를 가져오고 Pop 메서드를 사용하여 스택에서 요소를 팝합니다. 마지막으로 IsEmpty 메서드를 사용하여 스택이 비어 있는지 확인합니다.

프로그램을 실행한 후 출력은 다음과 같습니다.

栈顶元素为: 67
弹出: 67
栈是否为空? false

Summary

이 글에서는 Golang에서 스택을 구현하는 방법을 소개했습니다. 스택 구조를 정의하는 방법과 Push, Pop, Peek 및 IsEmpty 메서드를 구현하는 방법을 살펴보았습니다. 이 간단한 스택 구현은 Golang 프로그램에서 데이터를 저장 및 조작하고 스택 데이터 구조가 작동하는 방식을 더 잘 이해하는 데 도움이 됩니다.

위 내용은 골랭 스택 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.