Ir Idioma (aprendizaje contenedor)

Este artículo proviene de: el blog RDCC

Gracias Autor: ACHelloWorld

Ver el original: Ir Idioma (descripción contenedor)

envase: 容器| envase

Como puede verse que comprende tres partes: montón, lista y anular. Se introdujeron los siguiente

1. montón

   montón es el montón, es una estructura de datos común, en el que la fuente, proporciona las necesidades de interfaz a ser implementadas en el uso práctico.

   El siguiente es un ejemplo sobre el uso de montón.

   código:

principal del paquete 

de importación ( 
    " FMT " 
    " Contenedor / montón "     
) 

// montón proporciona la necesidad interfaz para implementar un método de 
tipo Heap [] int 

// configuración de la pila de la parte superior es pequeño, un gran cambio de la pila superior basta siguientes símbolos 
func (H * Heap) Menos (I, J int ) BOOL {
     retorno (* H) [I] <(* H) [J] 
} 

FUNC (H * Heap) Intercambiable (I, J int ) { 
    ( * H) [ I], (H *) [J] = (H *) [J], (* H) [I] 
} 

FUNC (H * Heap) len () int {
     retorno len (* H) 
} 

FUNC (H* Heap) Pop () interfaz {} { 
    x: = (* h) [h.Len () - 1 ]
     * h = (* h) [: h.Len () - 1 ]
     retorno x 
} 

func (h * Heap) de inserción (x interfaz {}) {
     * h = append (* h, x. ( int )) 
} 

func (h * Heap) Quitar (idx int ) interfaz {} { 
    h.Swap (idx, h.Len ( ) - 1 )
     volver h.Pop () 
} 

func main () { 
    
    // 创建一个montón 
    h: = & Heap {} 
    
    heap.Init (h) 
    //Insertar elementos en el montón 
    h.Push ( . 5 ) 
    h.Push ( 2 ) 
    h.Push ( . 1 ) 
    h.Push ( . 8 ) 
    h.Push ( . 4 ) 
    h.Push ( . 6 ) 
    h.Push ( 2 ) 

    // Output montón de elementos, el equivalente de una matriz, la matriz original 
    fmt.Println (H) 

    // esto debe ser reheapify, establecer una buena montón de 
    heap.Init (H) 

    // posición superior pequeña pila elemento correspondiente en la matriz de 
    FMT. println (H) 

    // eliminar el elemento de marcado 5, y el subíndice se inicia desde 0 
    (h.Remove 5 ) 

    // salida en forma de una pila 
    para h.Len ()> 0 {
        fmt.Printf (" % D " , heap.Pop (h)) 
    } 
    fmt.Println () 
}

 

2. lista

   lista se doblemente enlazada tipo de lista, se utilizan como sigue

   código:

principal paquete 

de importación ( 
    " FMT " 
    " Contenedor / Lista "     
) 

FUNC main () { 

    // crear una lista doblemente enlazada 
    LS: = list.New () 

    // insertará en la lista 26 letras minúsculas doblemente enlazadas 
    por I: = 97 ; I < 123 ; I ++ { 
        ls.PushFront (I)      // PushFront () en nombre de la parte de cabeza se inserta, el mismo empuje, () en nombre insertado desde la parte trasera 
    } 

    // iterar a través de todas las letras en las ls lista doblemente enlazada 
    para IT: = ls.Front () ; IT = nil ;! IT = it.Next () { 
        fmt.Printf ( " % C " , it.Value) 
    } 
    fmt.Println () 
}

ListY Element. El ex lograron una lista doblemente enlazada (en lo sucesivo, la lista), que representa la estructura de los elementos de la lista.

ListY Elementtodo tipo de estructuras. Tipo de estructura tiene una característica, es decir, que tienen valor cero será su estructura particular, pero ningún valor cualquier contenido personalizado, el equivalente de una concha


Lista de los métodos principales:

MoveBefore: Elementos dados a la parte delantera de los otros elementos

MoveAfter: Dadas elemento se mueve detrás de otro elemento

MoveToFront: El elemento dado se mueve a la vanguardia de la lista

MoveToBack: El elemento dado se mueve al extremo más posterior de la lista

Front: Obtener la vanguardia de la lista

Back: Obtener la lista de la última final

InsertBeforeInsertar un nuevo elemento antes de que los elementos que se especifican:

InsertAfter: Insertar un nuevo elemento después del elemento especificado

PushFront: Se utiliza para insertar un nuevo elemento a la cabeza de la lista.

PushBack: Se utiliza para insertar un nuevo elemento a la cabeza de la lista.

 

3. anillo

   anillo es una lista enlazada circular, se puede hacer referencia al uso específico del código siguiente

   código:

principal del paquete 

de importación ( 
    " FMT " 
    " Contenedor / anillo "     // paquete cerrado se introduce, véase / usr / local / Go / la src / PKG Contenedor / anillo / 
) 

FUNC main () { 
    // crear un elementos de bucle 10 
    r: como ring.New = ( 10 ) 

    // para asignaciones de elementos de bucle cerrado 
    para I: = 1. ; I <= r.Len (); I ++ { 
        r.Value = I 
        R & lt = r.Next () 
    } 

    // bucle para imprimir bucle el valor del elemento 
    r.Do ( 
        FUNC (P interfaz {}) { 
            el println (P) 
        }) 
    
    // después del elemento actual de los elementos obtenidos 5
    R5: r.Move = ( . 5 ) 
    fmt.Println (R5) 
    fmt.Println (r) 

    // Enlace el elemento actual r y r5, los elementos correspondientes a la eliminada entre R y R5 
    R1: = r.Link (R5) 
    fmt.Println (R1) 
    fmt.Println (R & lt) 
}

 

Supongo que te gusta

Origin www.cnblogs.com/-wenli/p/12500002.html
Recomendado
Clasificación