From c740c397e0e59f2c9d0e2d0d757625c7b6bb885e Mon Sep 17 00:00:00 2001 From: Attractive Chaos Date: Thu, 25 Mar 2021 22:58:27 -0400 Subject: [PATCH] added kavll_size() --- kavl-lite.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/kavl-lite.h b/kavl-lite.h index 354e90d..240ac8a 100644 --- a/kavl-lite.h +++ b/kavl-lite.h @@ -236,6 +236,21 @@ int main(void) { } \ } while (0) +#define kavll_size(__type, __head, __root, __cnt) do { \ + __type *_p, *_q; \ + *(__cnt) = 0; \ + for (_p = __root; _p; _p = _q) { \ + if (_p->__head.p[0] == 0) { \ + _q = _p->__head.p[1]; \ + ++*(__cnt); \ + } else { \ + _q = _p->__head.p[0]; \ + _p->__head.p[0] = _q->__head.p[1]; \ + _q->__head.p[1] = _p; \ + } \ + } \ + } while (0) + #define __KAVLL_ITR(pre, __scope, __type, __head, __cmp) \ typedef struct pre##_itr_t { \ const __type *stack[KAVLL_MAX_DEPTH], **top, *right; /* _right_ points to the right child of *top */ \ -- 2.47.3