Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Función auxiliar para la de redimensión (pila) #8

Open
dato opened this issue Oct 27, 2020 · 0 comments
Open

Función auxiliar para la de redimensión (pila) #8

dato opened this issue Oct 27, 2020 · 0 comments

Comments

@dato
Copy link
Owner

dato commented Oct 27, 2020

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).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant