Hej,
Jeg er stadig rookie C udvikler og jeg har prøvet kræfter med dbl. pointere og linkedlist på det seneste.
Kunne være dejligt med et lille review/hjælp, hvis der er nogen der har lyst?
Der ER bugs;
* dispose_list() free'er alle notes men valgrind fortæller invalid read size 8 - den kan jeg ikke lige lurre?
* delete_note() virker heller ikke efter hensigten :)
Koden ligger her på https://github.com/dbuch/linked-list. På forhånd tak :)
Arch Linux, Gnome 3.8.
Github: https://github.com/dbuch
17-10-2006
Skriv nogle kommentare på så der er en klar beskrivelse af hvad de forskellige ting gør.
Hvis din delete_note skal virke som "find det her element og slet det", så søger du ikke noget igennem.
Derudover ville det hjælpe dig hvis du returnere pointeren til den node der er svaret på dit spørgsmål; så kan du feks bruge din "search_node" i din "delete_node".
Generelt ser det ud til at du kommer til at bruge meget arbejde på at vedligeholde din linked list udenfor dit dit lille library; feks kræver append at du selv allokere et hukommelses-område, det kan funktionen vel selv holde styr på?
Har du et test-program der viser din test af koden?
Also, dit link i teksten er broken.
17-09-2010
#1 super! Faktisk fik jeg delete_note() til og virke lige som du forslog.
Har du et test-program der viser din test af koden?
ja bare git clone, og så kør make. main.c er faktisk min test og det bliver compilede uden noget fis. Håber du tør :p
Generelt ser det ud til at du kommer til at bruge meget arbejde på at vedligeholde din linked list udenfor dit dit lille library; feks kræver append at du selv allokere et hukommelses-område, det kan funktionen vel selv holde styr på?
Det skulle jeg mene, og ja jeg skal have lavet nogle comments i koden - det vil sikkert også hjælpe mig selv med og holde styr på alt det her pointer helvede som jeg endnu ikke er helt komfortabel med.
EDIT: list_dispose() er fiksede og delete_note() er som sagt også blevet til noget via search_note().
Arch Linux, Gnome 3.8.
Github: https://github.com/dbuch
04-06-2006
Jeg vil personligt (og gør jeg også altid selv når jeg har med linked lists at gøre) lave en typedef på pointer typen af din struct, altså:
typedef list *listPrt;
jeg synes personligt at koden bliver nemmere at overskue på den måde.
Desuden kan du godt typedef'e din struct med samme navn som struct'en selv, det vil sige du behøver ikke kalde den llist, du kan bare gøre således
struct list {
.....
}
typedef list list;
samlet så vil jeg bytte dine øverste linjer i linkedlist.h ud med
typedef struct list list;
typedef list *listPrt;
struct list {
int data;
listPrt next;
};
og alle de steder hvor du bruger *list vil jeg skrive listPrt og alle de steder du bruger **list vil jeg skrive *listPrt (fordi listPrtPrt er fjollet).
Det små ting men det bare my 50 cent ;)
Forresten hvis du undre dig over at jeg typedef'er structen før jeg definerer det, så er det fuldt lovligt...