/** * @brief Pushes an object on a stack. * * @details Pushes the object pointed to by @p obj on the stack pointed to by * @p s. * * @param s Stack where the object should be pushed on. * @param obj Object to be pushed on the stack. */ void stack_push(struct stack *s, object_t obj) { struct snode *node; /* Sanity check. */ assert(s != NULL); assert(obj != NULL); /* Link object. */ node = stack_node_create(obj); node->next = s->head.next; s->head.next = node; s->size++; }
void stack_push(stack_t s, element_t val) { stack_node_t node; assert(NULL != s); node = stack_node_create(val); if (NULL == s->head) { node->max = val; node->min = val; } else { node->max = (val > s->head->max ? val : s->head->max); node->min = (val < s->head->min ? val : s->head->min); } node->next = s->head; s->head = node; ++s->size; }