Die erste Zeile kompiliert so nicht. "list" ist ein Pointer auf einen lnode_t, also ist "*list" ein lnode_t und den kann man nicht weiter dereferenzieren. Mit jedem derefenzieren (mit "*") fällt ein Pointer im Typ weg.
Daher in der ersten Zeile nur "lnode_t *cur = list" -- "list" hat ja schon den richtigen Typen.
Was dann noch fehlt ist der Randfall, dass die Liste leer ist, also "list == 0" gilt.