我的 LinkedList 是单一链接的(每个节点都有一个计数 + 下一个引用)。
我需要创建 runlengthencode 方法,该方法采用 LinkedList 并返回列表的运行长度编码版本,而不创建任何新节点 - 即到位。它恰好在 Java 中。
我遇到的问题是跟踪代表运行开始的节点,当我沿着它运行时,它将出现在新列表中。在下面的外部while 循环中,我应该在哪里添加 rle 节点 ?
目前我有一个名为 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:在美国大学校,他们应该教我们这个,但我们只能自己动手