728x90
반응형
1.리스트 - 포인터로 연결된 요소
import (
"container/list"
"fmt"
)
func main() {
newList := list.New()//새로운 리스트 생성
element1 := newList.PushBack(3)//리스트 뒤에 3 요소 추가 [3]
element2 := newList.PushFront(5)//리스트 앞에 5요소 추가 [5 3]
newList.InsertBefore(6, element1)//element1객체 앞에 6요소 추가 [5 6 3]
newList.InsertAfter(7, element2)//element2객체 뒤에 7요소 추가 [5 7 6 3]
for element := v.Front(); element != nil; element := element.Next() {
fmt.Print(e.Value, " ")
}
for element := v.Back(); element != nil; element := element.Prev() {
fmt.Print(e.Value, " ")
}
}
(1)큐 구현
import (
"container/list"
"fmt"
)
type Queue struct {//Queue 구조체 정의
v * list.List
}
func (q *Queue) Push(val interface{}) {//요소 추가
q.v.PushBack(val)
}
func (q *Queue) Pop() interface{} {//요소 반환하면서 삭제
front := q.v.Front()
if front == nil {
return nil
}
return q.v.Remove(front)
}
func NewQueue() *Queue {
return &Queue{
list.New()
}
}
func main() {
queue := NewQueue()
for i := 0; i < 5; i++ {
queue.Push(i)
}
v := queue.Pop()
for v != nil {
fmt.Printf("%v -> ", v)
v = queue.Pop()
}
}
(2)스택 구현
import (
"container/list"
"fmt"
)
type Stack struct {//Stack 구조체 정의
v *list.List
}
func NewStack() *Stack {
return &Stack{
list.New()
}
}
func (s *Stack) Push(val interface{}) {//맨 뒤에 요소 추가
s.v.PushBack(val)
}
func (s *Stack) Pop() interface{} {//맨 뒤 요소 반환
back := s.v.Back()
if back == nil {
return nil
}
return s.v.Remove(back)
}
func main() {
stack := NewStack()
for i := 0; i < 5; i++ {
stack.Push(i)
}
val := Stack.Pop()
for val != nil {
fmt.Printf("%v -> ", val)
val = stack.Pop()
}
}
2.링
import (
"container/ring"
"fmt"
)
func main() {
r := ring.New(4)//요소가 4개인 링 생성
n := r.Len()//링 길이 반환
for i := 0; i < n; i++ {//각각 요소에 값 저장
r.Value = 'A' + i
r = r.Next()
}
for i := 0; i < n; i++ {//값 출력
fmt.Printf("%c ", r.Value)
r = r.Next()
}
fmt.Println()
for i := 0; i < n; i++ {//값 출력(역순)
fmt.Printf("%c ", r.Value)
r = r.Prev()
}
}
728x90
반응형
'Golang' 카테고리의 다른 글
[Golang] Gin-Swagger (0) | 2022.03.30 |
---|---|
[Golang] 에러 핸들링 (0) | 2022.03.24 |
[Golang] 함수 (1) | 2022.03.21 |
[Golang] 인터페이스 (0) | 2022.03.16 |
[Golang] 메소드 (0) | 2022.03.12 |