• 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

13 år 1 måned 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

13 år 1 måned 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

13 år 1 måned 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

tst 0
Linux Fanpakke til LUG'er og foreninger 0
KDE Plasma 6.6 skrivebordsmiljø udgivet 0
GRUB 2.14 introducerer understøttelse af EROFS, forbedringer til Btrfs og LVM 0
KDE Plasma 6.6 tilføjer en funktion, som brugerne har spurgt efter i evigheder 0

Seneste aktivitet

Pepsi Challenge 18
Canonical planlægger Kontroversielle GRUB ændringer til Ubuntu 26.10 Secure Boot 1
Ubuntu MATE grundlægger Martin Wimpress træder tilbage efter 12 år 1
OpenShot 3.5 tager et spring fremad inden for ydeevne, AI og videoredigering 4
(U)hyggen breder sig 6
rsync og filsystem 7
Stor sejr for open source, da Tyskland støtter åbent dokumentformat 2
youtube-tui: Nyd YouTube fra terminalen som en professionel 5
Lukker og slukker 8
BigLinux 6
Det engang så elskede PCLinuxOS er tilbage - og det er stadig en fantastisk Windows erstatning 1
Mousam er en detaljeret desktop vejrapp til Linux 1
Hjælp til Handbrake - ingen dk-undertekster 1
luckyBackup 2
GIMP 30
Pinegrow på Debian 13 ? 4
Openmediavault 1
E-mail blues 9
Driver til min scanner? 5
Printer Epson ET-2865 problem 16

© 2026 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !