小编Alp*_*owl的帖子

对链接数组进行排序

语境:

我有一个LinkedList类,其中包含并按正确的顺序自动插入节点。请注意,这是一个链表数据结构(保存节点/元素的数组代表 RAM,指针 - headtail以及 和next代表prevRAM 中的地址(但在本例中,它们是数组的索引,其中节点被保留)。

例如

myLinkedList.insert(2);
myLinkedList.insert(1);
myLinkedList.output(); // => [{value:2, next:null, prev:1}, {value:1,next:0,prev:null]}, head = 1, tail = 0
Run Code Online (Sandbox Code Playgroud)

所以现在当我调用我的printInOrder函数时,它将输出1,然后2,然后停止。

注意:当我插入一个新节点时,它会被推到数组的末尾,但其相邻节点的指针会发生变化(sonext和),以便从到 的prev类似火车的路径包括中的所有节点特定顺序(默认为升序)。所以插入的节点总是在末尾,只有它的指针表示它的位置。headtail

我的问题:

这是我的问题:(请参阅问题末尾的代码)

想象一下,我创建了一个链表,默认排序(升序),并且我有值 2、1 和 3。因此,当我迭代该列表时,我将收到 1,2,3。现在,我想重新排序链表。这意味着,每个节点的索引不会改变,但节点的指针会改变。毕竟,指针是创建顺序的。那么我将如何使用某种排序算法(例如合并或冒泡)来对我的节点进行排序,而无需实际更改它们的顺序,只需更改它们的nextprev指针(以及全局headtail)。

我的代码

这是到目前为止重新排序函数的代码,该函数当前使用冒泡排序但不起作用:

class LinkedList {
  constructor(sortingFunction) {
    this.head;
    this.tail;
    this.list = [];
    this.sortingFunction = …
Run Code Online (Sandbox Code Playgroud)

javascript arrays sorting linked-list

5
推荐指数
1
解决办法
674
查看次数

标签 统计

arrays ×1

javascript ×1

linked-list ×1

sorting ×1