
_Créditos das imagens: Grok
# 🔁 LeetCode 25 em Harbour: Revertendo Nós em Grupos de K
### Por [Naldo DJ](https://github.com/naldodj) — Soluções LeetCode em Harbour/XBase
---
## 📌 Desafio
O problema **25. Reverse Nodes in k-Group** do LeetCode nos pede para reverter os nós de uma lista encadeada em grupos de tamanho `k`. Se o número total de nós não for múltiplo de `k`, os nós restantes devem permanecer na mesma ordem.
### Exemplo
- **Entrada:** `[1,2,3,4,5]`, `k = 2`
- **Saída esperada:** `[2,1,4,3,5]`
A implementação deve **manipular apenas os ponteiros dos nós**, sem alterar os valores armazenados.
---
## 🛠️ Implementação em Harbour
Você pode conferir o código completo aqui:
📄 [`reverse_nodes_in_k-group.25.1.prg`](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/hb/025/reverse_nodes_in_k-group.25.1.prg)
---
## 📚 Estrutura da Solução
O Harbour não possui estruturas nativas de listas encadeadas, então criei uma classe `TListNode` para simular esse comportamento, conforme o padrão esperado pelo LeetCode.
### Classe de Nó:
```harbour
function TListNode()
static s_oTListNodeClass as object
if (s_oTListNodeClass==NIL)
s_oTListNodeClass:=HBClass():New("TLISTNODE")
s_oTListNodeClass:AddData("value")
s_oTListNodeClass:AddData("next",10)
s_oTListNodeClass:AddMethod("New",@TListNodeNew())
s_oTListNodeClass:Create()
endif
return(s_oTListNodeClass:Instance()) as object
```
---
## 🔄 Lógica de Reversão
A função principal `ReverseKGroup()` segue a abordagem iterativa com ponteiros, utilizando um nó "dummy" para simplificar a manipulação de cabeçalhos e reconexões.
### Trecho principal:
```harbour
while (.T.)
// Verifica se há nós suficientes para o grupo
oCurrent := oGroupPrevEnd:next
nCount := 0
while ((oCurrent!=NIL).and.(nCount
Comentários
Postar um comentário