反转嵌套的数组列表Javascript



我希望它从下到上反转列表。我使用了I-的循环,但即使使用内置的Reverse((函数也无法使其工作。

规则是:

  1. 您不能使用内置的reverse((函数
  2. null是不存在的对象,如果需要,可以使用空对象
  3. 您的函数应该能够反转任何类型的值列表
  4. 必须至少使用一个数组才能解决问题

原件:

var list = {
value: 1,
next: {
value: 2,
next: {
value: 3,
next: null     
}
}
};

将其反转为:

var list = {
value: 3,
next: {
value: 2,
next: {
value: 1,
next: null
}
}
};

示例测试用例:

function reverseList(list) {
// return reversedList;
}
Arguments: { value: 1, next: { value: 2, next: { value: 3, next: null } } };
Returns: { value: 3, next: { value: 2, next: { value: 1, next: null } } };
Arguments: { value: "a", next: { value: "b", next: { value: "c", next: null } } };
Returns: { value: "c", next: { value: "b", next: { value: "a", next: null } } };

没有数组,因此无法内置reverse函数。在SO上搜索反向链表也给了我这个我在代码片段中引用的东西。

var reverseLinkedList = function(linkedlist) {
var node = linkedlist;
var previous = null;
while (node) {
// save next or you lose it!!!
var save = node.next;
// reverse pointer
node.next = previous;
// increment previous to current node
previous = node;
// increment node to next node or null at end of list
node = save;
}
return previous; // Change the list head !!!
}
var list = {
value: 1,
next: {
value: 2,
next: {
value: 3,
next: null
}
}
};
var linkedlist = reverseLinkedList(list);
console.log(JSON.stringify(linkedlist));

最新更新