• Opret dig
  • Glemt adgangskode

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log ind
Hjem
LinuxIN.dk

Snak med

Opret dig!

Af dbuch | 24.02.2013 12:51

C linkedlist implementation - review/hjælp

Programmering
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 :)
  • Log ind eller opret dig for at tilføje kommentarer

Kommentarer3

# 1

12 år 4 måneder siden

Permalink

Indsendt af floop den 25. februar 2013 kl. 12:50

Permalink

Skriv nogle kommentare på

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.
  • Log ind eller opret dig for at tilføje kommentarer

# 2

12 år 4 måneder siden

Permalink

Indsendt af dbuch den 25. februar 2013 kl. 18:52

Permalink

#1 super! Faktisk fik jeg

#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().
  • Log ind eller opret dig for at tilføje kommentarer

# 3

12 år 4 måneder siden

Permalink

Indsendt af nicklasw den 25. februar 2013 kl. 23:05

Permalink

struktur ting

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...
  • Log ind eller opret dig for at tilføje kommentarer

Svar søges

Reserve kernel og btrfs 0
den er sjov 0
llumos Unix-operativsystem, 0
Den er go 0
14. februar = I Love Free Software Day 0

Seneste aktivitet

PcLinuxOS er død længe leve Pclosdebian 5
En snak om Linux-kompatibel software 12
PCLinuxOS 28
"Intet realistisk alternativ" - mig i r*ven 17
Open source events i danmark? 3
Virtuel maskine? 4
Gode anmeldelser Zorin OS 17.3 8
Open Source-eksperimentet 5
Nulstilling af adgangskode 6
Ingen Mint 5
Linux App Store Flathub når 3 milliarder downloads 2
Digitaliseringsministeriet sætter gang i pilotprojekt om digital suverænitet 3
Mest sikker webbrowser 5
Firefox 2
Privatbeskeder 7
Backup/synkronisering? 3
BigLinux 5
Chatgpt satire 1
Læsning af databasefil i Firefox 2
Vanilla OS 15

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !