Мой LinkedList связан исключительно (каждый узел имеет количество + следующую ссылку).
Мне нужно создать метод runlengthencode, который принимает LinkedList и возвращает закодированную версию списка без создания каких-либо новых узлов, т.е. на месте. Это на Java.
Проблема, с которой я сталкиваюсь, заключается в отслеживании узлов, представляющих начало прогона, которые будут отображаться в новом списке по мере того, как я иду по нему. Где я могу добавить узлы rle в внешний цикл 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
Любые указатели будут высоко оценены.
СТОН: В Американской большой школе нас должны этому учить, но мы предоставлены сами себе