c - How to make a generic linked list -
i'm trying create generic linked list in c programming language , succeeded have little problem:
linked_list.h
struct element { void * data; struct element * nel; }; typedef struct element element; struct list { size_t el_size; element * start_el; }; typedef struct list list;
linked_list.c
list * create_list(size_t el_size); void delete_list(list * ls); void append(list * ls, void * data); void s_append(list * ls, void * data); void append(list * ls, void * data) { element * last_el = ls - > start_el; if (last_el == null) ls - > start_el = last_el = malloc(sizeof(element)); else { while (last_el - > nel != null) last_el = last_el - > nel; last_el - > nel = malloc(sizeof(element)); last_el = last_el - > nel; } void * cdata = malloc(ls - > el_size); memcpy(cdata, data, ls - > el_size); last_el - > info = cdata; last_el - > nel = null; }
this works type int
, char
, float
, double
etc. not working char *
because copying first 4 bytes
(implementation dependant) of string
, not whole string
.
the problem size of every element in list fixed (el_size). not strings have same size, assuming 1 byte per char "hola" take 4 bytes while "hi" while take 2 bytes.
c algorithm list struct primitive-types
No comments:
Post a Comment