AVL Iterator.

FossilOrigin-Name: 8232f083c22ebc5207a46f412f7ef272b86233d41d167d7c5a09540a1a30429c
This commit is contained in:
7u83@mail.ru 2015-04-09 14:29:50 +00:00
parent f08bdbd48a
commit eadc16f241

43
src/capwap/avliter_next.c Normal file
View File

@ -0,0 +1,43 @@
#include "avltree.h"
void * avliter_next(avliter_t *i)
{
while ( i->stack_ptr) {
i->stack_ptr--;
i->cur=i->stack[i->stack_ptr];
if (!i->cur)
continue;
if ((i->stack_ptr)&1) {
return i->cur->data;
}
break;
}
if (!i->cur){
return NULL;
}
while(i->cur->left) {
/* push right branch */
i->stack[i->stack_ptr++]=i->cur->right;
/* push node */
i->stack[i->stack_ptr++]=i->cur;
i->cur=i->cur->left;
}
i->stack[i->stack_ptr++]=i->cur->right;
return i->cur->data;
}