C# Linked List (Cómo Funciona para Desarrolladores)
Una lista enlazada es una estructura de datos lineal compuesta por una serie de nodos, que también se pueden llamar elementos. A diferencia de los arreglos, donde los elementos/nodos se almacenan en ubicaciones de memoria contiguas, las listas enlazadas utilizan asignación de memoria dinámica, permitiendo que los elementos/nodos estén dispersos por toda la memoria.
En su forma más simple, las "listas enlazadas" consisten en nodos enlazados juntos linealmente. Cada nodo contiene dos partes principales:
- Datos: Carga útil almacenada en el nodo. Esto puede ser de cualquier tipo de datos dependiendo de la implementación, como enteros, cadenas, objetos, etc.
- Puntero Siguiente: Una referencia (o puntero) al siguiente nodo en la secuencia. Este puntero indica la ubicación de memoria del siguiente nodo y apunta hacia adelante en la lista enlazada.
El último nodo en una lista enlazada generalmente apunta a una referencia nula, indicando el final de la lista.
En este artículo, examinaremos en detalle la lista enlazada en C# y también exploraremos la biblioteca IronPDF, una herramienta de generación de PDF de Iron Software.
Tipos de listas enlazadas
1. Lista enlazada simple
Una lista enlazada simple tiene un nodo con solo una referencia, que normalmente apunta al siguiente nodo en la secuencia. El recorrido de la lista se limita al movimiento en una dirección, típicamente desde la cabeza (el nodo inicial) hasta la cola (el nodo final).
2. Lista doblemente enlazada
En una lista enlazada doble, cada nodo contiene dos referencias: una que apunta al siguiente nodo y otra que apunta al nodo anterior en la secuencia. Este enlace bidireccional permite el recorrido en ambas direcciones, hacia adelante y hacia atrás.
3. Lista enlazada circular
En una lista enlazada circular, el último nodo apunta de nuevo al primer nodo, formando una estructura circular. Este tipo de lista enlazada puede implementarse utilizando nodos enlazados simples o dobles.
Operaciones básicas con listas enlazadas
- Inserción: Agregar un nuevo nodo a la lista en una posición específica, como el principio, el final o el medio.
- Eliminación: Quitar un nodo objeto especificado de la lista y ajustar los punteros de los nodos vecinos en consecuencia.
- Recorrido: Iterar a través de la lista para acceder o manipular los datos de cada nodo.
- Búsqueda: Buscar un nodo específico en la lista basado en el valor específico de sus datos.
Lista enlazada en C#
En C#, puedes implementar una lista enlazada usando la clase LinkedList del espacio de nombres System.Collections.Generic. Aquí hay un ejemplo de todas las operaciones básicas:
using System;
using System.Collections.Generic;
namespace CsharpSamples
{
public class Program
{
public static void Main()
{
// Create a new linked list of integers
LinkedList<int> linkedList = new LinkedList<int>();
// Add elements to the linked list
linkedList.AddLast(10);
linkedList.AddLast(20);
linkedList.AddLast(30);
linkedList.AddLast(40);
// Traverse and print the elements of the linked list
Console.WriteLine("Traverse Linked List elements:");
foreach (var item in linkedList)
{
Console.WriteLine(item);
}
// Display number of linked list elements
Console.WriteLine($"Number of Linked List elements: {linkedList.Count}");
// Find/Search for an element in the linked list
Console.WriteLine("\nFind/Search Element Linked List elements: 30");
var foundNode = linkedList.Find(30);
if (foundNode != null)
{
Console.WriteLine(
$"Found Value: {foundNode.Value}, " +
$"Next Element: {(foundNode.Next != null ? foundNode.Next.Value.ToString() : "null")}, " +
$"Previous Element: {(foundNode.Previous != null ? foundNode.Previous.Value.ToString() : "null")}"
);
}
// Insert an element at a specified node
LinkedListNode<int> current = linkedList.Find(20);
if (current != null)
{
linkedList.AddAfter(current, 25);
}
Console.WriteLine($"\nNumber of Linked List elements: {linkedList.Count}");
Console.WriteLine("\nLinked List elements after insertion:");
foreach (var item in linkedList)
{
Console.WriteLine(item);
}
// Remove an existing node from the linked list
linkedList.Remove(30);
Console.WriteLine("\nLinked List elements after removal:");
foreach (var item in linkedList)
{
Console.WriteLine(item);
}
Console.WriteLine($"\nNumber of Linked List elements: {linkedList.Count}");
}
}
}using System;
using System.Collections.Generic;
namespace CsharpSamples
{
public class Program
{
public static void Main()
{
// Create a new linked list of integers
LinkedList<int> linkedList = new LinkedList<int>();
// Add elements to the linked list
linkedList.AddLast(10);
linkedList.AddLast(20);
linkedList.AddLast(30);
linkedList.AddLast(40);
// Traverse and print the elements of the linked list
Console.WriteLine("Traverse Linked List elements:");
foreach (var item in linkedList)
{
Console.WriteLine(item);
}
// Display number of linked list elements
Console.WriteLine($"Number of Linked List elements: {linkedList.Count}");
// Find/Search for an element in the linked list
Console.WriteLine("\nFind/Search Element Linked List elements: 30");
var foundNode = linkedList.Find(30);
if (foundNode != null)
{
Console.WriteLine(
$"Found Value: {foundNode.Value}, " +
$"Next Element: {(foundNode.Next != null ? foundNode.Next.Value.ToString() : "null")}, " +
$"Previous Element: {(foundNode.Previous != null ? foundNode.Previous.Value.ToString() : "null")}"
);
}
// Insert an element at a specified node
LinkedListNode<int> current = linkedList.Find(20);
if (current != null)
{
linkedList.AddAfter(current, 25);
}
Console.WriteLine($"\nNumber of Linked List elements: {linkedList.Count}");
Console.WriteLine("\nLinked List elements after insertion:");
foreach (var item in linkedList)
{
Console.WriteLine(item);
}
// Remove an existing node from the linked list
linkedList.Remove(30);
Console.WriteLine("\nLinked List elements after removal:");
foreach (var item in linkedList)
{
Console.WriteLine(item);
}
Console.WriteLine($"\nNumber of Linked List elements: {linkedList.Count}");
}
}
}Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Namespace CsharpSamples
Public Class Program
Public Shared Sub Main()
' Create a new linked list of integers
Dim linkedList As New LinkedList(Of Integer)()
' Add elements to the linked list
linkedList.AddLast(10)
linkedList.AddLast(20)
linkedList.AddLast(30)
linkedList.AddLast(40)
' Traverse and print the elements of the linked list
Console.WriteLine("Traverse Linked List elements:")
For Each item In linkedList
Console.WriteLine(item)
Next item
' Display number of linked list elements
Console.WriteLine($"Number of Linked List elements: {linkedList.Count}")
' Find/Search for an element in the linked list
Console.WriteLine(vbLf & "Find/Search Element Linked List elements: 30")
Dim foundNode = linkedList.Find(30)
If foundNode IsNot Nothing Then
Console.WriteLine($"Found Value: {foundNode.Value}, " & $"Next Element: {(If(foundNode.Next IsNot Nothing, foundNode.Next.Value.ToString(), "null"))}, " & $"Previous Element: {(If(foundNode.Previous IsNot Nothing, foundNode.Previous.Value.ToString(), "null"))}")
End If
' Insert an element at a specified node
Dim current As LinkedListNode(Of Integer) = linkedList.Find(20)
If current IsNot Nothing Then
linkedList.AddAfter(current, 25)
End If
Console.WriteLine($vbLf & "Number of Linked List elements: {linkedList.Count}")
Console.WriteLine(vbLf & "Linked List elements after insertion:")
For Each item In linkedList
Console.WriteLine(item)
Next item
' Remove an existing node from the linked list
linkedList.Remove(30)
Console.WriteLine(vbLf & "Linked List elements after removal:")
For Each item In linkedList
Console.WriteLine(item)
Next item
Console.WriteLine($vbLf & "Number of Linked List elements: {linkedList.Count}")
End Sub
End Class
End NamespaceExplicación del código
- Crear una nueva lista enlazada de enteros usando
new LinkedList<int>(). - Agregar objetos de valor especificado a la lista enlazada.
- Recorrer e imprimir los elementos de la lista enlazada utilizando un bucle
foreach. - Buscar un elemento en la lista enlazada.
- Insertar un elemento en un nodo especificado utilizando los métodos
FindyAddAfter. - Eliminar un nodo existente de la lista enlazada utilizando el método
Remove.
Resultado

Presentando IronPDF
Descubre más sobre IronPDF es una poderosa biblioteca de PDF en C# desarrollada y mantenida por Iron Software. Proporciona un conjunto completo de características para crear, editar y extraer contenido de documentos PDF dentro de proyectos .NET.
Puntos clave sobre IronPDF
Conversión de HTML a PDF
IronPDF te permite convertir contenido HTML a formato PDF. Puedes renderizar páginas HTML, URLs y cadenas HTML en PDFs con facilidad.
Aplicaciones API
La biblioteca ofrece una API fácil de usar que permite a los desarrolladores generar PDFs de calidad profesional directamente desde HTML. Ya sea que necesites crear facturas, informes u otros documentos, IronPDF simplifica el proceso.
Compatibilidad multiplataforma
IronPDF es compatible con varios entornos .NET, incluidos .NET Core, .NET Standard y .NET Framework. Funciona en plataformas Windows, Linux y macOS.
Versatilidad
IronPDF es compatible con diferentes tipos de proyectos, como aplicaciones web (Blazor y WebForms), aplicaciones de escritorio (WPF y MAUI) y aplicaciones de consola.
Fuentes de contenido
Puedes generar PDFs a partir de varias fuentes de contenido, incluidos archivos HTML, vistas de Razor (Blazor Server), CSHTML (MVC y Razor), ASPX (WebForms) y XAML (MAUI).
Características adicionales
- Agregar encabezados y pies de página a PDFs.
- Unir, dividir, agregar, copiar y eliminar páginas de PDF.
- Establecer contraseñas, permisos y firmas digitales.
- Optimizar el rendimiento con soporte multihilo y asincrónico.
Compatibilidad
IronPDF se adhiere a los estándares PDF, incluidas las versiones 1.2 a 1.7, PDF/UA y PDF/A. También admite la codificación de caracteres UTF-8, URLs base y codificación de activos.
Generar un documento PDF utilizando LinkedList
Ahora vamos a crear un documento PDF utilizando IronPDF y también demostraremos el uso de cadenas LinkedList.
Para empezar, abre Visual Studio y crea una aplicación de consola seleccionando de las plantillas de proyectos como se muestra a continuación.

Proporciona un nombre de proyecto y una ubicación.

Seleccione la versión .NET requerida.

Instala IronPDF desde el administrador de paquetes de Visual Studio como el de abajo.

O se puede instalar usando la línea de comandos a continuación.
dotnet add package IronPdf --version 2024.4.2
Agrega el siguiente código.
using System;
using System.Collections.Generic;
using IronPdf;
namespace CsharpSamples
{
public class Program
{
public static void Main()
{
var content = "<h1>Demonstrate IronPDF with C# LinkedList</h1>";
content += "<h2>Create a new linked list of strings</h2>";
content += "<p>Create a new linked list of strings with new LinkedList<string>()</p>";
// Create a new linked list of strings
LinkedList<string> linkedList = new LinkedList<string>();
// Add elements to the linked list
content += "<p>Add Apple to linkedList</p>";
linkedList.AddLast("Apple");
content += "<p>Add Banana to linkedList</p>";
linkedList.AddLast("Banana");
content += "<p>Add Orange to linkedList</p>";
linkedList.AddLast("Orange");
content += "<h2>Print the elements of the linked list</h2>";
Console.WriteLine("Linked List elements:");
foreach (var item in linkedList)
{
content += $"<p>{item}</p>";
Console.WriteLine(item);
}
content += "<h2>Insert an element at a specific position</h2>";
LinkedListNode<string> node = linkedList.Find("Banana");
if (node != null)
{
linkedList.AddAfter(node, "Mango");
content += "<p>Find Banana and insert Mango After</p>";
}
Console.WriteLine("\nLinked List elements after insertion:");
content += "<h2>Linked List elements after insertion:</h2>";
foreach (var item in linkedList)
{
content += $"<p>{item}</p>";
Console.WriteLine(item);
}
content += "<h2>Remove an element from the linked list</h2>";
linkedList.Remove("Orange");
content += "<p>Remove Orange from linked list</p>";
Console.WriteLine("\nLinked List elements after removal:");
content += "<h2>Linked List elements after removal:</h2>";
foreach (var item in linkedList)
{
content += $"<p>{item}</p>";
Console.WriteLine(item);
}
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from HTML string
var pdf = renderer.RenderHtmlAsPdf(content);
// Save to a file
pdf.SaveAs("AwesomeIronOutput.pdf");
}
}
}using System;
using System.Collections.Generic;
using IronPdf;
namespace CsharpSamples
{
public class Program
{
public static void Main()
{
var content = "<h1>Demonstrate IronPDF with C# LinkedList</h1>";
content += "<h2>Create a new linked list of strings</h2>";
content += "<p>Create a new linked list of strings with new LinkedList<string>()</p>";
// Create a new linked list of strings
LinkedList<string> linkedList = new LinkedList<string>();
// Add elements to the linked list
content += "<p>Add Apple to linkedList</p>";
linkedList.AddLast("Apple");
content += "<p>Add Banana to linkedList</p>";
linkedList.AddLast("Banana");
content += "<p>Add Orange to linkedList</p>";
linkedList.AddLast("Orange");
content += "<h2>Print the elements of the linked list</h2>";
Console.WriteLine("Linked List elements:");
foreach (var item in linkedList)
{
content += $"<p>{item}</p>";
Console.WriteLine(item);
}
content += "<h2>Insert an element at a specific position</h2>";
LinkedListNode<string> node = linkedList.Find("Banana");
if (node != null)
{
linkedList.AddAfter(node, "Mango");
content += "<p>Find Banana and insert Mango After</p>";
}
Console.WriteLine("\nLinked List elements after insertion:");
content += "<h2>Linked List elements after insertion:</h2>";
foreach (var item in linkedList)
{
content += $"<p>{item}</p>";
Console.WriteLine(item);
}
content += "<h2>Remove an element from the linked list</h2>";
linkedList.Remove("Orange");
content += "<p>Remove Orange from linked list</p>";
Console.WriteLine("\nLinked List elements after removal:");
content += "<h2>Linked List elements after removal:</h2>";
foreach (var item in linkedList)
{
content += $"<p>{item}</p>";
Console.WriteLine(item);
}
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from HTML string
var pdf = renderer.RenderHtmlAsPdf(content);
// Save to a file
pdf.SaveAs("AwesomeIronOutput.pdf");
}
}
}Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports IronPdf
Namespace CsharpSamples
Public Class Program
Public Shared Sub Main()
Dim content = "<h1>Demonstrate IronPDF with C# LinkedList</h1>"
content &= "<h2>Create a new linked list of strings</h2>"
content &= "<p>Create a new linked list of strings with new LinkedList<string>()</p>"
' Create a new linked list of strings
Dim linkedList As New LinkedList(Of String)()
' Add elements to the linked list
content &= "<p>Add Apple to linkedList</p>"
linkedList.AddLast("Apple")
content &= "<p>Add Banana to linkedList</p>"
linkedList.AddLast("Banana")
content &= "<p>Add Orange to linkedList</p>"
linkedList.AddLast("Orange")
content &= "<h2>Print the elements of the linked list</h2>"
Console.WriteLine("Linked List elements:")
For Each item In linkedList
content &= $"<p>{item}</p>"
Console.WriteLine(item)
Next item
content &= "<h2>Insert an element at a specific position</h2>"
Dim node As LinkedListNode(Of String) = linkedList.Find("Banana")
If node IsNot Nothing Then
linkedList.AddAfter(node, "Mango")
content &= "<p>Find Banana and insert Mango After</p>"
End If
Console.WriteLine(vbLf & "Linked List elements after insertion:")
content &= "<h2>Linked List elements after insertion:</h2>"
For Each item In linkedList
content &= $"<p>{item}</p>"
Console.WriteLine(item)
Next item
content &= "<h2>Remove an element from the linked list</h2>"
linkedList.Remove("Orange")
content &= "<p>Remove Orange from linked list</p>"
Console.WriteLine(vbLf & "Linked List elements after removal:")
content &= "<h2>Linked List elements after removal:</h2>"
For Each item In linkedList
content &= $"<p>{item}</p>"
Console.WriteLine(item)
Next item
' Create a PDF renderer
Dim renderer = New ChromePdfRenderer()
' Create a PDF from HTML string
Dim pdf = renderer.RenderHtmlAsPdf(content)
' Save to a file
pdf.SaveAs("AwesomeIronOutput.pdf")
End Sub
End Class
End NamespaceExplicación del código
- Primero, comenzamos creando el contenido para el PDF, utilizando un objeto de cadena de contenido. El contenido se genera como una cadena HTML.
- Crea una nueva lista enlazada de cadenas con
new LinkedList<string>(). - Agrega elementos a la lista enlazada y también adjunta información a la cadena de contenido del PDF.
- Imprime los elementos de la lista enlazada y agrégalos al contenido del PDF.
- Inserta un elemento en una posición con
AddAfter; actualiza el contenido e imprime la lista. 6. Elimina un elemento de la lista conRemove; actualiza el contenido e imprime la lista. - Finalmente, guarda la cadena de contenido HTML generada en un documento PDF utilizando los métodos
ChromePdfRenderer,RenderHtmlAsPdfySaveAs.
Resultado
La salida tiene una marca de agua que se puede eliminar utilizando una licencia válida de la página de licencias de IronPDF.
La biblioteca IronPDF requiere una licencia para funcionar, y se puede obtener en la página de licencias del producto.
Licencia de IronPDF
La biblioteca IronPDF requiere una licencia para funcionar, y se puede obtener de la página de licencias del producto.
Pega la clave en appSettings.json abajo.
{
"IronPdf.License.LicenseKey": "The Key Goes Here"
}Conclusión
La LinkedList de C# proporciona una estructura de datos versátil para gestionar colecciones de elementos, ofreciendo inserciones y eliminaciones eficientes mientras permite el redimensionamiento dinámico, similar a la función hash predeterminada. Comprender las características y operaciones de las listas enlazadas es esencial para construir soluciones de software eficientes y escalables. Entender listas enlazadas es esencial para construir aplicaciones eficientes.
Una consideración cuidadosa de los requisitos específicos y las características de los datos puede guiar la selección de la estructura de datos más apropiada para la tarea en cuestión. La biblioteca IronPDF de Iron Software permite a los desarrolladores crear y manipular documentos PDF sin esfuerzo, permitiendo habilidades avanzadas para desarrollar aplicaciones modernas.
La biblioteca IronPDF de Iron Software permite a los desarrolladores crear y manipular documentos PDF sin esfuerzo, lo que permite desarrollar aplicaciones modernas con conocimientos avanzados.
Preguntas Frecuentes
¿Qué es una lista enlazada en C#?
Una lista enlazada en C# es una estructura de datos lineal compuesta por nodos, donde cada nodo contiene datos y una referencia al siguiente nodo. Esta estructura, a diferencia de los arreglos, permite la asignación dinámica de memoria, permitiendo que los elementos se almacenen en ubicaciones de memoria no contiguas.
¿Cómo puedo convertir HTML a PDF en C#?
Puede usar el método RenderHtmlAsPdf de IronPDF para convertir cadenas HTML en PDFs. También le permite convertir archivos HTML en PDFs usando RenderHtmlFileAsPdf.
¿Cuáles son los tipos de listas enlazadas en C#?
En C#, los principales tipos de listas enlazadas son las listas enlazadas simples, las listas enlazadas dobles y las listas enlazadas circulares. Las listas enlazadas simples tienen nodos con una sola referencia al siguiente nodo, las listas enlazadas dobles tienen referencias tanto al siguiente como al nodo anterior, y las listas enlazadas circulares tienen el último nodo apuntando de vuelta al primer nodo.
¿Qué operaciones básicas se pueden realizar en las listas enlazadas?
Las listas enlazadas admiten operaciones tales como inserción (agregar un nodo nuevo), eliminación (eliminar un nodo existente), recorrido (iterar a través de la lista) y búsqueda (encontrar un nodo basado en sus datos).
¿Cómo se implementa una lista enlazada en C#?
Se puede implementar una lista enlazada en C# usando la clase LinkedList del espacio de nombres System.Collections.Generic, que proporciona métodos para agregar, eliminar y manipular los nodos de la lista.
¿Qué características proporciona una biblioteca de generación de PDFs?
Una biblioteca de generación de PDFs como IronPDF ofrece conversión de HTML a PDF, extracción de texto, fusión y división de documentos, y establecimiento de permisos de documentos, todo dentro de varios entornos .NET.
¿Cómo se pueden usar las listas enlazadas con la generación de PDFs?
Las listas enlazadas pueden almacenar y organizar contenido dinámicamente, que luego puede ser iterado y convertido en un documento PDF utilizando una biblioteca como IronPDF, facilitando la manipulación y salida de contenido.
¿Cuáles son las ventajas de usar listas enlazadas en el desarrollo de software?
Las listas enlazadas ofrecen inserciones y eliminaciones eficientes, redimensionamiento dinámico, y son beneficiosas para implementar estructuras de datos dinámicas como pilas y colas. Son especialmente útiles cuando se necesitan modificaciones frecuentes, aunque carecen de capacidades de acceso aleatorio.
¿Cuál es la diferencia entre listas enlazadas simples y dobles?
La principal diferencia es que las listas enlazadas simples tienen nodos con una sola referencia al siguiente nodo, permitiendo un recorrido unidireccional, mientras que las listas enlazadas dobles tienen nodos con referencias tanto al siguiente como al nodo anterior, permitiendo un recorrido bidireccional.
¿Cómo puedo generar un PDF a partir de datos de una lista enlazada en C#?
Puede iterar a través de la lista enlazada para recopilar datos y luego usar la API de IronPDF para renderizar estos datos en un documento PDF. Esto implica aprovechar métodos como HtmlToPdf para convertir contenido estructurado en un formato PDF profesional.








