En este artículo de mi serie conocida como Algoritmos notables, te resuelvo este algoritmo que es uno de los más conocidos a nivel mundial y por lo tanto uno de los más solicitados en entrevistas técnicas. Más te vale aprenderlo 🤭 aquí vamos!
Definiciones
Primero, qué es una lista enlazada simple?
Una lista enlazada simple es una estructura de datos lineal en la cual cada elemento, llamado nodo, contiene dos partes principales:
- Datos: La información que se almacena en el nodo.
- Referencia (puntero o next): Un puntero o referencia al siguiente nodo en la secuencia.
La principal característica de una lista enlazada simple es que cada nodo apunta al siguiente nodo, y el último nodo apunta a null
, lo que indica el final de la lista.
Esta estructura de datos está presente en muchos lenguajes de programación, en el caso de C# el tipo utilizado para este fin es LinkedList. Aunque aquí crearemos nuestra propia clase llamada Node.
En este artículo te enseño las estructuras de datos que existen en C# 💪🥳
Algoritmo resuelto en C#
Lo que haremos será un programa en consola que recibe una lista enlazada y la invertirá, finalmente imprimiremos los resultados en pantalla.
class Program
{
static void Main(string[] args)
{
// Crear lista enlazada 1 -> 2 -> 3 -> 4 -> 5
Node mi_nodo = new Node(1);
mi_nodo.Next = new Node(2);
mi_nodo.Next.Next = new Node(3);
mi_nodo.Next.Next.Next = new Node(4);
mi_nodo.Next.Next.Next.Next = new Node(5);
// Invierto la lista enlazada
mi_nodo = Reverselist(mi_nodo);
// Imprimir
while (mi_nodo != null)
{
Console.WriteLine(mi_nodo.Data);
mi_nodo = mi_nodo.Next;
}
Console.WriteLine();
}
public static Node Reverselist(Node nodo)
{
var current = nodo;
Node prev = null;
while(current != null)
{
var next = current.Next;
current.Next = prev;
prev = current;
current = next;
}
return prev;
}
}
// Clase para almacenar nodos
public class Node
{
public Node Next;
public int Data;
public Node(int data)
{
Data = data;
Next = null;
}
}
Si ejecutas el programa en la consola obtendrás el resultado correcto
Si esta entrada te ha gustado, compártela a todo el mundo! 🐿️🙌
Créditos de imagen de portada: DALL-E.