# Two functions that move array elements [closed]

These two functions act on a stack, an array of integers (whose first element is the top of the stack, LIFO).

The first function retrieves the first element and puts it at the end. The other is the opposite.

I would like to combine these two functions into only one function, if possible. (I have a constraint, 25 lines maximum)

int     *reverse(int value, int size, int *stack)
{
int     value;
int     i;
int     *previous;

value = *stack;
previous = stack;
if (!(stack = (int*)malloc(sizeof(int) * size)))
return (NULL);
i = 1;
while (i < size)
{
stack[i - 1] = previous[i];
i++;
}
stack[i - 1] = value;
free(previous);
return (stack);
}

int     *sv_reverse(int value, int size, int *stack)
{
int     value;
int     i;
int     *previous;

value = stack[size - 1];
previous = stack;
if (!(stack = (int*)malloc(sizeof(int) * size)))
return (NULL);
*stack = value;
i = 1;
while (i < size)
{
stack[i] = previous[i + 1];
i++;
}
free(previous);
return (stack);
}


## closed as unclear what you're asking by chux - Reinstate Monica, holroy, Austin Hastings, Toby Speight, GraipherFeb 11 at 15:13

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

• ken, What do you expect value = stack[size - 1]; to do when size == 0? – chux - Reinstate Monica Feb 9 at 16:26