Esempio n. 1
0
File: stack.c Progetto: ppenna/mylib
/**
 * @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++;
}
Esempio n. 2
0
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;
}