[golang 데이터 구조 와 알고리즘] - 순서 대기 열과 체인 대기 열
1850 단어 데이터 구조
대기 열 은 스 택 과 마찬가지 로 조작 이 제 한 된 선형 표 데이터 구조 이 고 선진 적 인 선 출 특성 을 가진다.
배열 로 이 루어 진 스 택 을 순서 스 택 이 라 고 하고 링크 로 이 루어 진 스 택 을 체인 스 택 이 라 고 합 니 다. 마찬가지 로 배열 로 이 루어 진 대기 열 을 순서 대기 열 이 라 고 하고 링크 로 이 루어 진 대기 열 을 체인 대기 열 이 라 고 합 니 다.
순서 대열
package modules
type ArrayQueue struct {
items []string //
n int //
head int //
tail int //
}
//
func (a *ArrayQueue)InitQueue(n int) {
a.n = n
a.head = 0
a.tail = 0
a.items = make([]string, a.n)
}
func (a *ArrayQueue)PushQueue(data string) bool {
if a.tail == a.n {
if a.head == 0 {
// tail=n && head=0 ,
return false
}
// tail=0 ,
// , , ,
for i := a.head; i < a.tail; i++ {
a.items[i-a.head] = a.items[i]
}
a.head = 0
a.tail -= a.head
}
// head tail
// head 0 ,tail head ;
a.items[a.tail] = data
a.tail++
return true
}
func (a *ArrayQueue)PopQueue() string {
if a.tail == a.head {
//
return ""
}
temp := a.items[a.head]
// head ,head
a.head++
return temp
}
체인 대기 열
package modules
type LinkedQueue struct {
head *Node
tail *Node
}
func (l *LinkedQueue)InitLinkedQueue() {
l.head = nil
l.tail = nil
}
func (l *LinkedQueue)PushLinkedQueue(value int) {
if l.tail == nil {
newNode := &Node{Data:value, Next:nil}
//
l.head = newNode
l.tail = newNode
} else {
//
l.tail.Next = &Node{Data:value, Next:nil}
//
l.tail = l.tail.Next
}
}
func (l *LinkedQueue)PopLinkedQueue() int {
//
if l.head == nil {
return -1
}
temp := l.head.Data
l.head = l.head.Next
if l.head == nil {
// ,
l.tail = nil
}
return temp
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.