You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Parte del código de redimensión se repite en dos primitivas (apilar y desapilar).
Las condiciones en cada caso son diferentes, pero una vez se entra en el if y se ha calculado el nuevo tamaño, el proceso es el mismo:
llamar a realloc con la nueva capacidad
verificar si realloc tuvo éxito
si lo tuvo, actualizar el arreglo de datos, y la capacidad
Todo esto se puede poner en una función auxiliar que:
reciba como primer parámetro la pila (para poder actualizar datos y capacidad)
reciba como segundo parámetro la nueva capacidad¹ (que podrá
ser mayor o menor a la anterior, pues ya viene calculada)
devuelva verdadero o falso indicando si se pudo redimensionar
(Se recomienda marcar la función como static, y definirla antes de pila_apilar y pila_desapilar.)
(¹) Es más genérico recibir la capacidad que un enumerado tipo REDIM_UP o REDIM_DOWN, ya que la lógica de cada redimensión queda en la primitiva a la que pertenece. Alternativamente, se podría tener una función que fuera asegurar_capacidad(), que tomase solo la pila, y devolviese un booleano (encapsulándolo todo).
The text was updated successfully, but these errors were encountered:
Parte del código de redimensión se repite en dos primitivas (apilar y desapilar).
Las condiciones en cada caso son diferentes, pero una vez se entra en el
if
y se ha calculado el nuevo tamaño, el proceso es el mismo:Todo esto se puede poner en una función auxiliar que:
reciba como primer parámetro la pila (para poder actualizar
datos y capacidad)
reciba como segundo parámetro la nueva capacidad¹ (que podrá
ser mayor o menor a la anterior, pues ya viene calculada)
devuelva verdadero o falso indicando si se pudo redimensionar
(Se recomienda marcar la función como static, y definirla antes de pila_apilar y pila_desapilar.)
(¹) Es más genérico recibir la capacidad que un enumerado tipo REDIM_UP o REDIM_DOWN, ya que la lógica de cada redimensión queda en la primitiva a la que pertenece. Alternativamente, se podría tener una función que fuera
asegurar_capacidad()
, que tomase solo la pila, y devolviese un booleano (encapsulándolo todo).The text was updated successfully, but these errors were encountered: