[데이터 구조 원리 와 응용 (Golang 설명)] ① 배열
                                            
 4081 단어  golang
                    
                                                  .-.          .- 
                             .-,.--..-,.--.        \ \        / / 
                        __   |  .-. |  .-. |   __   \ \      / /  
                     .:--.'. | |  | | |  | |.:--.'.  \ \    / /   
                    / |   \ || |  | | |  | / |   \ |  \ \  / /    
                    `" __ | || |  '-| |  '-`" __ | |   \ `  /     
                     .'.''| || |    | |     .'.''| |    \  /      
                    / /   | || |    | |    / /   | |_   / /       
                    \ \._,\ '|_|    |_|    \ \._,\ '|`-' /        
                     `--'  `"               `--'  `" '..'     Golang
Online Go tutorial
1.1 원리
배열 (Array) 은 선형 표 데이터 구조 로 메모리 에 연속 적 인 저장 공간 을 신청 하여 같은 유형의 데 이 터 를 저장 하 는 데 사용 된다.
배열 을 제외 하고 링크, 스 택, 대기 열 은 모두 선형 표 구조 이다.
아래 표 에 따라 무 작위 접근 을 실현 하 다
컴퓨터 는 모든 메모리 셀 에 주 소 를 할당 한 다음 이 주 소 를 통 해 메모리 의 데 이 터 를 방문 합 니 다. 배열 의 요 소 를 방문 할 때 다음 주소 지정 공식 에 따라 접근 합 니 다.
$$ a[i]\_address = base\_address + i * data\_type\_size $$
그 중 $a [i] \address $a [i] 의 주 소 를 표시 합 니 다. $base \address $는 컴퓨터 가 할당 한 배열 의 주 소 를 표시 합 니 다. $data \type\_size $는 배열 의 모든 요소 의 크기 를 표시 합 니 다. 데이터 형식 이 정형 int 라면 $data \type\_size $는 4 바이트 와 같 습 니 다.
1.2 관련 조작 과 분석
끼어들다
배열 의 k 번 째 위치 에 데 이 터 를 삽입 하려 면 배열 의 k ~ n 위치 이 부분의 요 소 를 뒤로 옮 겨 야 합 니 다.
삭제
삽입 데이터 와 유사
1.4 LeetCode 연습
1.5 단순 실현
package main
import "fmt"
type Array interface {
    Get(i int) interface{}
    Set(i int, element interface{})
    Len() int
    Remove(i int)
    Insert(i int, element interface{})
    //     ,  
    Print()
}
type array struct {
    data []interface{}
}
func (a *array) Print() {
    fmt.Println(a.data)
}
func (a *array) Get(i int) interface{} {
    return a.data[i]
}
func (a *array) Set(i int, element interface{}) {
    a.data[i] = element
}
func (a *array) Len() int {
    return len(a.data)
}
func (a *array) Remove(i int) {
    for ; i < a.Len() - 1; i++ {
        a.data[i] = a.data[i+1]
    }
    a.data = a.data[:a.Len()-1]
}
func (a *array) Insert(i int, element interface{}) {
    a.data = append(a.data, 0)
    for j:= a.Len()-1; j > i; j-- {
        a.data[j] = a.data[j-1]
    }
    a.data[i] = element
}
func NewArray(n int) Array {
    return &array{data: make([]interface{}, n)}
}
func main() {
    //     
    arr := NewArray(3)
    arr.Set(0, "hello")
    arr.Set(1, "world")
    fmt.Println(arr.Get(0))
    arr.Print()
    arr.Insert(0, "mike")
    arr.Print()
    arr.Remove(3)
    arr.Print()
}
                이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
set containerThere is no built-in set container in Go How to implement Set struct{} => type struct{}{} => 0bytes How to create set :=...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.