C# | Clase LinkedList

La clase LinkedList < T > está presente en el espacio de nombres System.Collections.Generic . Este tipo genérico permite la rápida inserción y extracción de elementos. Implementa una lista enlazada clásica. Cada objeto se asigna por separado. En LinkedList, ciertas operaciones no requieren que se copie toda la colección. Pero en muchos casos comunes, LinkedList dificulta el rendimiento.

Características de la clase LinkedList:

  • LinkedList< T > es una lista enlazada de propósito general. Admite enumeradores.
  • La inserción y la eliminación son operaciones O(1) .
  • Puede eliminar Nodes y volver a insertarlos, ya sea en la misma lista o en otra lista, lo que da como resultado que no se asignen objetos adicionales en el montón.
  • Dado que la lista también mantiene un recuento interno, obtener la propiedad Count es una operación O(1).
  • Cada Node en un objeto LinkedList< T > es del tipo LinkedListNode< T >.
  • La clase LinkedList no admite el enstringmiento, la división, los ciclos u otras funciones que pueden dejar la lista en un estado incoherente.
  • Si LinkedList está vacío, las propiedades First y Last contienen un valor nulo.
  • LinkedList está doblemente vinculado, por lo tanto, cada Node apunta hacia adelante al siguiente Node y hacia atrás al Node anterior.

Constructores

Constructor Descripción
Lista enlazada() Inicializa una nueva instancia de la clase LinkedList que está vacía.
Lista enlazada (IEnumerable) Inicializa una nueva instancia de la clase LinkedList que contiene elementos copiados del IEnumerable especificado y tiene capacidad suficiente para acomodar la cantidad de elementos copiados.
LinkedList(SerializationInfo, StreamingContext) Inicializa una nueva instancia de la clase LinkedList que se puede serializar con SerializationInfo y StreamingContext especificados.

Ejemplo:

// C# code to create a LinkedList
using System;
using System.Collections;
using System.Collections.Generic;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a LinkedList of Strings
        LinkedList<String> myList = new LinkedList<String>();
  
        // Adding nodes in LinkedList
        myList.AddLast("Geeks");
        myList.AddLast("for");
        myList.AddLast("Data Structures");
        myList.AddLast("Noida");
  
        // To check if LinkedList is empty or not
        if (myList.Count > 0)
            Console.WriteLine("LinkedList is not empty");
        else
            Console.WriteLine("LinkedList is empty");
    }
}

Producción:

LinkedList is not empty

Propiedades

Propiedad Descripción
Contar Obtiene el número de Nodes realmente contenidos en LinkedList.
Primero Obtiene el primer Node de LinkedList.
Ultimo Obtiene el último Node de LinkedList.

Ejemplo:

// C# code to illustrate the
// LinkedList<T> class properties
using System;
using System.Collections;
using System.Collections.Generic;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a LinkedList of Strings
        LinkedList<String> myList = new LinkedList<String>();
  
        // Adding nodes in LinkedList
        myList.AddLast("GeeksforGeeks");
        myList.AddLast("GFG");
        myList.AddLast("Data Structures");
        myList.AddLast("Noida");
  
        // ------- Count Property -------
          
        // To get the first node of the LinkedList
        if (myList.Count > 0)
            Console.WriteLine(myList.First.Value);
        else
            Console.WriteLine("LinkedList is empty");
              
        // ------- Last Property -------
          
        // To get the last node of the LinkedList
        if (myList.Count > 0)
            Console.WriteLine(myList.Last.Value);
        else
            Console.WriteLine("LinkedList is empty");    
              
    }
}

Producción:

GeeksforGeeks
Noida

Métodos

Método Descripción
AñadirDespués Agrega un nuevo Node o valor después de un Node existente en LinkedList.
AñadirAntes Agrega un nuevo Node o valor antes de un Node existente en LinkedList.
AñadirPrimero Agrega un nuevo Node o valor al comienzo de LinkedList.
AñadirÚltimo Agrega un nuevo Node o valor al final de LinkedList.
Claro() Elimina todos los Nodes de LinkedList.
Contiene (T) Determina si un valor está en LinkedList.
Copiar a (T[], Int32) Copia toda la LinkedList en una array unidimensional compatible, comenzando en el índice especificado de la array de destino.
Es igual a (Objeto) Determina si el objeto especificado es igual al objeto actual.
Encontrar t) Encuentra el primer Node que contiene el valor especificado.
BuscarÚltimo(T) Encuentra el último Node que contiene el valor especificado.
ObtenerEnumerador() Devuelve un enumerador que itera a través de LinkedList.
Obtener código hash() Sirve como la función hash predeterminada.
GetObjectData(SerializationInfo, StreamingContext) Implementa la interfaz ISerializable y devuelve los datos necesarios para serializar la instancia de LinkedList.
ObtenerTipo() Obtiene el Tipo de la instancia actual.
MemberwiseClone() Crea una copia superficial del objeto actual.
OnDeserialization(Objeto) Implementa la interfaz ISerializable y genera el evento de deserialización cuando se completa la deserialización.
Quitar (Node de lista enlazada) Elimina el Node especificado de LinkedList.
Quitar (T) Elimina la primera aparición del valor especificado de LinkedList.
QuitarPrimero() Elimina el Node al comienzo de LinkedList.
QuitarÚltimo() Elimina el Node al final de LinkedList.
Enstringr() Devuelve una string que representa el objeto actual.

Ejemplo:

// C# code to check if a
// value is in LinkedList
using System;
using System.Collections;
using System.Collections.Generic;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
        // Creating a LinkedList of Strings
        LinkedList<String> myList = new LinkedList<String>();
  
        // Adding nodes in LinkedList
        myList.AddLast("A");
        myList.AddLast("B");
        myList.AddLast("C");
        myList.AddLast("D");
        myList.AddLast("E");
  
        // To check if a value is in LinkedList
        Console.WriteLine(myList.Contains("B"));
    }
}

Producción:

True

Ejemplo:

// C# code to remove the specified
// node from the LinkedList
using System;
using System.Collections;
using System.Collections.Generic;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a LinkedList of Integers
        LinkedList<int> myList = new LinkedList<int>();
  
        // Adding nodes in LinkedList
        myList.AddLast(2);
        myList.AddLast(4);
        myList.AddLast(6);
        myList.AddLast(8);
  
        // To get the count of nodes in LinkedList
        // before removing all the nodes
        Console.WriteLine("Total nodes in myList are : " + myList.Count);
  
        // Displaying the nodes in LinkedList
        foreach(int i in myList)
        {
            Console.WriteLine(i);
        }
  
        // Removing the first node from the LinkedList
        myList.Remove(myList.First);
  
        // To get the count of nodes in LinkedList
        // after removing all the nodes
        Console.WriteLine("Total nodes in myList are : " + myList.Count);
  
        // Displaying the nodes in LinkedList
        foreach(int i in myList)
        {
            Console.WriteLine(i);
        }
    }
}

Producción:

Total nodes in myList are : 4
2
4
6
8
Total nodes in myList are : 3
4
6
8

Referencia:

Publicación traducida automáticamente

Artículo escrito por Sahil_Bansall y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *