Implementación de listas enlazadas en C#

Una LinkedList es una estructura de datos lineal que almacena elementos en la ubicación no contigua. Los elementos de una lista vinculada se vinculan entre sí mediante punteros. O, en otras palabras, LinkedList consta de Nodes en los que cada Node contiene un campo de datos y una referencia (enlace) al siguiente Node de la lista. En C#, LinkedList es el tipo genérico de colección que se define en el espacio de nombres System.Collections.Generic . Es una lista doblemente enlazada , por lo tanto, cada Node apunta hacia adelante al Node Siguiente y hacia atrás al Node Anterior. Es una colección dinámica que crece, según la necesidad de su programa. También proporciona elementos de inserción y extracción rápidos. Puntos importantes:

  • La clase LinkedList implementa las interfaces ICollection<T> , IEnumerable<T> , IReadOnlyCollection<T> , ICollection , IEnumerable , IDeserializationCallback e ISerializable .
  • También admite enumeradores.
  • 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.
  • Cada Node en un objeto LinkedList<T> es del tipo LinkedListNode<T>.
  • No es compatible con el enstringmiento, la división, los ciclos u otras características que pueden dejar la lista en un estado inconsistente.
  • Si LinkedList está vacío, las propiedades First y Last contienen un valor nulo.
  • La capacidad de una LinkedList es la cantidad de elementos que la LinkedList puede contener.
  • En LinkedList, se permite almacenar elementos duplicados pero del mismo tipo.

¿Cómo crear una LinkedList?

Complete Interview Preparation - GFG

Una clase LinkedList tiene 3 constructores que se utilizan para crear una LinkedList que son los siguientes:

  • LinkedList(): este constructor se usa para crear una instancia de la clase LinkedList que está vacía.
  • LinkedList (IEnumerable): este constructor se usa para crear una 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): este constructor se usa para crear una instancia de la clase LinkedList que se puede serializar con SerializationInfo y StreamingContext especificados.

Veamos cómo crear una LinkedList usando el constructor LinkedList() : Paso 1: Incluya el espacio de nombres System.Collections.Generic en su programa con la ayuda de la palabra clave using :

using System.Collections.Generic;

Paso 2: Cree una LinkedList usando la clase LinkedList como se muestra a continuación:

LinkedList <Tipo_de_lista_vinculada> nombre_de_lista_vinculada = new LinkedList <Tipo_de_lista_vinculada>();

Paso 3: LinkedList proporciona 4 métodos diferentes para agregar Nodes y estos métodos son:

  • AddAfter: este método se usa para agregar un nuevo Node o valor después de un Node existente en LinkedList.
  • AddBefore: este método se usa para agregar un nuevo Node o valor antes de un Node existente en LinkedList.
  • AddFirst : este método se usa para agregar un nuevo Node o valor al comienzo de LinkedList.
  • AddLast : este método se usa para agregar un nuevo Node o valor al final de LinkedList.

Paso 4: se accede a los elementos de LinkedList mediante un bucle foreach o un bucle for. Como se muestra en el siguiente ejemplo. Ejemplo: 

CSharp

// C# program to illustrate how 
// to create a LinkedList
using System;
using System.Collections.Generic;
  
class GFG {
  
    // Main Method
    static public void Main()
    {
  
        // Creating a linkedlist
        // Using LinkedList class
        LinkedList<String> my_list = new LinkedList<String>();
  
        // Adding elements in the LinkedList
        // Using AddLast() method
        my_list.AddLast("Zoya");
        my_list.AddLast("Shilpa");
        my_list.AddLast("Rohit");
        my_list.AddLast("Rohan");
        my_list.AddLast("Juhi");
        my_list.AddLast("Zoya");
  
        Console.WriteLine("Best students of XYZ university:");
  
        // Accessing the elements of 
        // LinkedList Using foreach loop
        foreach(string str in my_list)
        {
            Console.WriteLine(str);
        }
    }
}
Producción:

Best students of XYZ university:
Zoya
Shilpa
Rohit
Rohan
Juhi
Zoya

¿Cómo eliminar elementos de LinkedList?

En LinkedList, se permite eliminar elementos de LinkedList. La clase LinkedList<T> proporciona 5 métodos diferentes para eliminar elementos y los métodos son:

  • Clear() : este método se utiliza para eliminar todos los Nodes de LinkedList.
  • Remove(LinkedListNode) : este método se utiliza para eliminar el Node especificado de LinkedList.
  • Remove(T) : este método se utiliza para eliminar la primera aparición del valor especificado de LinkedList.
  • RemoveFirst() : este método se usa para eliminar el Node al comienzo de LinkedList.
  • RemoveLast() : este método se usa para eliminar el Node al final de LinkedList.

Ejemplo: 

CSharp

// C# program to illustrate how to
// remove elements from LinkedList
using System;
using System.Collections.Generic;
  
class GFG {
  
    // Main Method
    static public void Main()
    {
  
        // Creating a linkedlist
        // Using LinkedList class
        LinkedList<String> my_list = new LinkedList<String>();
  
        // Adding elements in the LinkedList
        // Using AddLast() method
        my_list.AddLast("Zoya");
        my_list.AddLast("Shilpa");
        my_list.AddLast("Rohit");
        my_list.AddLast("Rohan");
        my_list.AddLast("Juhi");
        my_list.AddLast("Zoya");
  
        // Initial number of elements
        Console.WriteLine("Best students of XYZ "+
                         "university initially:");
  
        // Accessing the elements of 
        // Linkedlist Using foreach loop
        foreach(string str in my_list)
        {
            Console.WriteLine(str);
        }
  
        // After using Remove(LinkedListNode)
        // method
        Console.WriteLine("Best students of XYZ"+
                         " university in 2000:");
  
        my_list.Remove(my_list.First);
  
        foreach(string str in my_list)
        {
            Console.WriteLine(str);
        }
  
        // After using Remove(T) method
        Console.WriteLine("Best students of XYZ"+
                         " university in 2001:");
  
        my_list.Remove("Rohit");
  
        foreach(string str in my_list)
        {
            Console.WriteLine(str);
        }
  
        // After using RemoveFirst() method
        Console.WriteLine("Best students of XYZ"+
                         " university in 2002:");
  
        my_list.RemoveFirst();
  
        foreach(string str in my_list)
        {
            Console.WriteLine(str);
        }
  
        // After using RemoveLast() method
        Console.WriteLine("Best students of XYZ"+
                         " university in 2003:");
  
        my_list.RemoveLast();
  
        foreach(string str in my_list)
        {
            Console.WriteLine(str);
        }
  
        // After using Clear() method
        my_list.Clear();
        Console.WriteLine("Number of students: {0}",
                                     my_list.Count);
    }
}
Producción:

Best students of XYZ university initially:
Zoya
Shilpa
Rohit
Rohan
Juhi
Zoya
Best students of XYZ university in 2000:
Shilpa
Rohit
Rohan
Juhi
Zoya
Best students of XYZ university in 2001:
Shilpa
Rohan
Juhi
Zoya
Best students of XYZ university in 2002:
Rohan
Juhi
Zoya
Best students of XYZ university in 2003:
Rohan
Juhi
Number of students: 0

¿Cómo verificar la disponibilidad de los elementos en LinkedList?

En LinkedList, puede verificar si el valor dado está presente o no usando el método Contiene (T) . Este método se utiliza para determinar si un valor está en LinkedList. Ejemplo: 

CSharp

// C# program to illustrate how 
// to check whether the given 
// element is present or not 
// in the LinkedList
using System;
using System.Collections.Generic;
  
class GFG {
  
    // Main Method
    static public void Main()
    {
  
        // Creating a linkedlist
        // Using LinkedList class
        LinkedList<String> my_list = new LinkedList<String>();
  
        // Adding elements in the Linkedlist
        // Using AddLast() method
        my_list.AddLast("Zoya");
        my_list.AddLast("Shilpa");
        my_list.AddLast("Rohit");
        my_list.AddLast("Rohan");
        my_list.AddLast("Juhi");
  
        // Check if the given element
        // is available or not
        if (my_list.Contains("Shilpa") == true) 
        {
            Console.WriteLine("Element Found...!!");
        }
        else 
        {
            Console.WriteLine("Element Not found...!!");
        }
    }
}
Producción:

Element Found...!!

Publicación traducida automáticamente

Artículo escrito por ankita_saini 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 *