Go 채널에 대한 후입선출 동작 구현
Go 채널은 자연스럽게 FIFO(선입선출)를 따릅니다. ) 동작은 깊이 우선 검색(DFS) 알고리즘 구현과 같은 특정 시나리오에 적합하지 않을 수 있습니다. 이러한 한계를 극복하려면 대체 접근 방식을 모색하는 것이 중요합니다.
스택 데이터 구조 사용
안타깝게도 Go 채널은 기본적으로 Last-In, First-를 지원하지 않습니다. 아웃(LIFO) 동작. 답변에서 제안된 것처럼 한 가지 해결책은 컨테이너/힙 패키지를 활용하여 스택 데이터 구조를 생성하는 것입니다.
다음은 힙을 사용하여 스택을 구현하는 방법을 보여주는 간단한 예입니다.
import "container/heap"
type Stack []int
func (s Stack) Len() int { return len(s) }
func (s Stack) Less(i, j int) bool { return s[i] > s[j] } // Reverse the comparison for LIFO
// Initialize the stack
var stack Stack
// Push an element onto the stack
func Push(x int) { heap.Push(&stack, x) }
// Pop an element from the stack
func Pop() int {
old := stack
l := len(old)
x := old[l-1]
old = old[:l-1]
heap.Init(&stack)
for i := range old {
heap.Push(&stack, old[i])
}
return x
}
스택과 같은 LIFO 데이터 구조를 구현하면 DFS 알고리즘에 필요한 후입선출 동작을 달성할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3