Modified stack iterator index

This commit is contained in:
Leonardo committed 2019-03-29 17:49:46 -03:00
1 parent d70b145743
commit dde58b2349
2 files changed
+44 -4

No files matched your search

+42 -2
View File
@@ -5,25 +5,36 @@
// Create containers to use only in this file
COLLECTION_GENERATE(LIST, PUBLIC, l, list, static, , int)
COLLECTION_GENERATE(LINKEDLIST, PUBLIC, ll, llist, static, , int)
COLLECTION_GENERATE(STACK, PUBLIC, s, stack, static, , int)
COLLECTION_GENERATE(QUEUE, PUBLIC, q, queue, static, , int)
COLLECTION_GENERATE(DEQUE, PUBLIC, d, deque, static, , int)
COLLECTION_GENERATE(TREESET, PUBLIC, ts, tset, static, , int)
int intcmp(int a, int b)
{
return a - b;
}
int main(int argc, char const *argv[])
{
// Initialize all of them with an internal capacity of 100
list *l = l_new(100);
llist *ll = ll_new();
stack *s = s_new(100);
queue *q = q_new(100);
deque *d = d_new(100);
tset *ts = ts_new(intcmp);
// Add 20 elements to each of them
for (int i = 0; i < 20; i++)
{
l_push_back(l, i);
ll_push_back(ll, i);
s_push(s, i);
q_enqueue(q, i);
d_push_back(d, i);
ts_insert(ts, i);
}
// Some extra elements
@@ -33,6 +44,15 @@ int main(int argc, char const *argv[])
d_push_back(d, 21);
d_push_back(d, 22);
d_push_back(d, 23);
ll_push_back(ll, 21);
ll_push_back(ll, 22);
ll_push_back(ll, 23);
ll_push_back(ll, 24);
ts_insert(ts, 21);
ts_insert(ts, 22);
ts_insert(ts, 23);
ts_insert(ts, 24);
ts_insert(ts, 25);
// All FOR_EACH macros contains three available variables:
// - var : the elements that changes with each iteration
@@ -48,9 +68,9 @@ int main(int argc, char const *argv[])
})
FOR_EACH(s, stack, int, s, {
if (index == iter.target->count - 1)
if (index == 0)
printf("[ %d, ", var);
else if (index == 0)
else if (index == iter.target->count - 1)
printf("%d ]\n", var);
else
printf("%d, ", var);
@@ -74,10 +94,30 @@ int main(int argc, char const *argv[])
printf("%d, ", var);
})
FOR_EACH(ll, llist, int, ll, {
if (index == 0)
printf("[ %d, ", var);
else if (index == iter.target->count - 1)
printf("%d ]\n", var);
else
printf("%d, ", var);
})
FOR_EACH(ts, tset, int, ts, {
if (index == 0)
printf("[ %d, ", var);
else if (index == iter.target->count - 1)
printf("%d ]\n", var);
else
printf("%d, ", var);
})
l_free(l);
ll_free(ll);
s_free(s);
q_free(q);
d_free(d);
ts_free(ts);
return 0;
}
+2 -2
View File
@@ -238,7 +238,7 @@
if (iter->end) \
return false; \
\
*index = iter->cursor; \
*index = iter->target->count - iter->cursor - 1; \
*result = iter->target->buffer[iter->cursor]; \
iter->start = false; \
\
@@ -255,7 +255,7 @@
if (iter->start) \
return false; \
\
*index = iter->cursor; \
*index = iter->target->count - iter->cursor - 1; \
*result = iter->target->buffer[iter->cursor]; \
iter->end = false; \
\