我的LinkedList是单一链接的(每个节点都有一个计数+下一个引用)。
我需要创建runlengthencode方法,该方法接受LinkedList并返回列表的行程编码版本,而不创建任何新节点 - 即就地。 碰巧是在Java 。
我遇到的问题是跟踪表示运行开始的节点,当我继续运行时,这些节点将出现在新列表中。我在哪里添加rle节点 外部 while while循环?
目前我有一个名为CurrRun的参考和一个来自CurrRun的跑步者,而CurrRun和CurrRun.next的值是相同的。
注意:此代码尽可能剥离了丑陋的Java语法
//instantiated nodes here
currRun = myListHead.next
Node runner = currRun
while (currRun.next != null){
int count = 1;
while (runner.value == runner.next.value){
count++
runner = runner.next
//no more runs in current run
//update currRun count
currRun.count = count
//move currRun to next run node
currRun = runner.next
}
}
// return the myHead-> currNode1 -> currNode2 -> .... -> null
return myHead
任何指针都会非常感激。
MOAN:在美国大学校,他们应该教我们这个,但我们留给自己的设备
答案 0 :(得分:0)
我不会将结果写回currRun
。相反,我会保留指向列表中第n个节点的指针,并将第n个运行写回该节点。这样,您新编码的列表将是连续的,您不必担心哪些节点代表运行的开始,哪些节点不代表。