Arrays and Lists
by kwiliarty
JavaScript
function arrayToList(arr) {
var output = null;
for (var i = arr.length - 1; i >= 0; i--) {
output = {
value: arr[i],
rest: output
}
}
return output;
}
function listToArray(list) {
var output = [];
for (var node = list; node; node = node.rest) {
output.push(node.value);
}
return output;
}
function prepend(el, list) {
list = {value: el, rest: list};
return list;
}
function nth(list, num) {
var node = list;
var value;
for (var i=0; i<=num; i++) {
if (node) {
value = node.value;
node = node.rest;
} else {
value = undefined;
break;
}
}
return value;
}
function nthR(list, nth) {
if (!list) {
return undefined;
}
if (nth == 0) {
return list.value;
}
return nthR(list.rest, nth -1);
}
var list = arrayToList([10, 20]);
console.log(list);
var arr = listToArray(arrayToList([10, 20, 30]));
console.log(arr);
console.log(prepend(10, prepend(20, null)));
console.log(nth(arrayToList([10, 20, 30]), 0));
console.log(nthR(arrayToList([10, 20, 30]), 2));