• 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 8 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 8 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 8 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

Internettet er ved at dø. Vi kan stadig stoppe det 0
Tid til at lære noget igen 0
TPM 2 0
BigLinux 0
Amerikansk tastatur på dansk tastatur 0

Seneste aktivitet

Nørder søger nørder: Første Linux-brugergruppe på Mors 2
Østrigsk ministerium smider Microsoft ud til fordel for Nextcloud 1
Brug carburetor til at forblive usynlig online 8
Sådan konfigurerer du flatpaks' flathub til verified only 9
Plasma tapet-skifter 3
How to upgrade to LMDE 7 4
Virksomheder og enheder der kører på Linux 11
NordVPN har udgivet kildekoden til sin grafiske brugergrænseflade 2
Flere og flere bruger Brave browseren 1
LibreOffice og Collabora: Hvorfor er de ikke i skolerne i stedet for Word og Google Docs? 11
Firewall igen 5
Værdien ved open source 2
Sailfish på android telefon 1
Ladybird Browser 7
Satiriske ordspil 3
Kan ikke boote på installation 26
Tilføj signatur til Evolution mail 2
LUKS kryptering - Er der andre der bruger det 15
Dansk distro til software udviklere 2
Linux Debian 5

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !