diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-02-15 20:03:12 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-02-15 20:03:45 +0100 |
commit | 827a21b55ad5085765788728f0048f257cb35ccd (patch) | |
tree | 032c5319b09ef496eeaa8833056de855f7163aef /linked_list.inc.h | |
parent | Remove repeat information in invocation of FOR macro. (diff) | |
download | calp-827a21b55ad5085765788728f0048f257cb35ccd.tar.gz calp-827a21b55ad5085765788728f0048f257cb35ccd.tar.xz |
LinkedList O(1) length.
Diffstat (limited to 'linked_list.inc.h')
-rw-r--r-- | linked_list.inc.h | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/linked_list.inc.h b/linked_list.inc.h index cdb0ac1a..cb6df29c 100644 --- a/linked_list.inc.h +++ b/linked_list.inc.h @@ -86,6 +86,7 @@ TYPE* POP(LLIST(TYPE)) ( LLIST(TYPE)* lst) { UNLINK(LINK(TYPE))(frst); TYPE* retval = frst->value; + --lst->length; free (frst); return retval; } @@ -128,13 +129,7 @@ int APPEND(LLIST(TYPE)) ( LLIST(TYPE)* dest, LLIST(TYPE)* new ) { } int SIZE(LLIST(TYPE)) ( LLIST(TYPE)* llist ) { - int size = 0; - LINK(TYPE)* l = FIRST(llist); - while (l->after != NULL) { - ++size; - l = l->after; - } - return size; + return llist->length; } int EMPTY(LLIST(TYPE)) ( LLIST(TYPE)* llist ) { |