48 lines
1.4 KiB
Markdown
48 lines
1.4 KiB
Markdown
|
|
# C Linked List
|
|||
|
|
|
|||
|
|
Vollständige einfach-verkettete Liste — bis auf `list_free()`, das als leerer Stub vorliegt.
|
|||
|
|
Jeder Programmlauf leckt den gesamten Listen-Speicher.
|
|||
|
|
|
|||
|
|
## Aktueller Stand
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
linked_list.h Interface: node_new, list_prepend, list_append, list_print, list_free, list_length
|
|||
|
|
linked_list.c Alles implementiert — außer list_free() (Stub, tut nichts)
|
|||
|
|
main.c Baut Liste 1–5, gibt sie aus, ruft list_free() auf (ohne Wirkung)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Demo 1: `/quick_check` als Diagnose
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
/quick_check "Gibt es Speicherlecks oder sonstige Probleme in diesem C-Projekt?"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Der Judge analysiert den Code und identifiziert das leere `list_free()` als Speicherleck-Quelle.
|
|||
|
|
|
|||
|
|
## Demo 2: `/fix` für gezieltes Nacharbeiten
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
/fix "Implementiere list_free() korrekt, sodass valgrind --leak-check=full sauber ist."
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Coder implementiert die Funktion, committet. Kein vollständiger Judge-Loop —
|
|||
|
|
ideal für kleine, klar abgegrenzte Fixes.
|
|||
|
|
|
|||
|
|
## Demo 3: `/patch` für Minimal-Erweiterungen
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
/patch "Ergänze list_search(head, value) in Header und Implementierung.
|
|||
|
|
Gibt den ersten Node* mit dem gesuchten Wert zurück, oder NULL."
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
pi-coder wendet einen unified diff an (`apply_patch`-Tool), ohne den vollständigen Loop.
|
|||
|
|
|
|||
|
|
## Manueller Build
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
gcc -Wall -Wextra -o ll_demo linked_list.c main.c
|
|||
|
|
./ll_demo
|
|||
|
|
|
|||
|
|
# Mit Leak-Check:
|
|||
|
|
valgrind --leak-check=full ./ll_demo
|
|||
|
|
```
|