Linked List
Receives an array of integers and builds a singly linked list, where each node holds a value and a pointer to the next one. It walks the list following each next pointer until it reaches null, and rebuilds the sequence backwards. Returns a new array with the values in reverse order.
Visualization
- Input
- Result
Algorithm code
// Linked List β a single pure function. Builds a singly linked list from the
// given values and returns its values reversed. Internal node helpers keep the
// reversal readable while exporting only the entry point.
/**
* @param {number[]} values - list node values, in order
* @returns {number[]} the values in reversed order
*/
export function reverseLinkedList(values) {
// Build the singly linked list.
let head = null;
for (let i = values.length - 1; i >= 0; i -= 1) {
head = { value: values[i], next: head };
}
// Reverse the pointers.
let prev = null;
let current = head;
while (current !== null) {
const next = current.next;
current.next = prev;
prev = current;
current = next;
}
// Read the reversed list back into an array.
const result = [];
for (let node = prev; node !== null; node = node.next) {
result.push(node.value);
}
return result;
} FUNCTION reverseLinkedList(values):
// Build the singly linked list
head β null
FOR i FROM length(values) - 1 DOWN TO 0:
head β Node(value: values[i], next: head)
// Reverse the pointers in-place
prev β null
current β head
WHILE current β null:
next β current.next
current.next β prev
prev β current
current β next
// Read the reversed list back into an array
result β []
node β prev
WHILE node β null:
APPEND node.value TO result
node β node.next
RETURN result