diff --git a/stack.c b/stack.c index 27469186a0c3fb480eb73d281b64eac8d52ed6bd..222323ad858553aa6c7aff4e90fd664a9712fb85 100644 --- a/stack.c +++ b/stack.c @@ -16,3 +16,12 @@ void stack_peek(stack s, int *value){ *value = s.data[s.top]; } } + +void stack_clone(stack s, stack *clone) { + clone->top = s.top; + clone->capacity = s.capacity; + clone->data = malloc(sizeof(int) * s.capacity); + for (int i = 0; i <= s.top && i < s.capacity; i++) { + clone->data[i] = s.data[i]; + } +} \ No newline at end of file diff --git a/stack.h b/stack.h index 8da80c2f2fff5493b622780eb35d4157b1362621..f1bd309920ef229aa8ab3b15325938e0102ff80f 100644 --- a/stack.h +++ b/stack.h @@ -10,5 +10,6 @@ typedef struct _stack { void stack_init(stack *stack); void stack_peek(stack s, int *value); +void stack_clone(stack s, stack *clone); #endif