Está en la página 1de 7

UNIVERSIDAD FERMIN TORO

CABUDARE

EVALUACION DATOS I

Nombre y Apellidos Juan Antonio Galicia Gonzalez

1. Defina Memoria Dinámica. 1pt

La memoria dinámica es un área de la memoria principal de la computadora que se


asigna y libera en tiempo de ejecución. Significa que el programador puede solicitar
memoria adicional según sea necesario, sin tener que especificar el tamaño de la
memoria de antemano

2. Que es una puntero, ejemplifique 2pt

Un puntero es definido como un tipo de dato que almacena la dirección de


otras variables o una dirección de memoria.
Ejemplo de un puntero en código C:
int* pc, c;
c = 5;
pc = &c;

En este código la variable “c” tiene asignado como valor entero el número 5. Y la
variable “pc”, puede leerse como puntero a c, lo que hace es asignar la dirección de
“c” al puntero “pc”

3. Que es una variable puntero, ejemplifique. 2 pt

Creo que la pregunta se repite, una variable puntero seria lo mismo que un
puntero. La sintaxis en todo caso en un lenguaje que acepta esta
caracteristica (lenguaje C) seria:
int *p

4. Enumera 3 diferencia entre memoria dinámica y estática. 2pt


Tamaño: La memoria dinámica se puede asignar de cualquier tamaño,
mientras que la memoria estática tiene un tamaño fijo que se especifica al
inicio del programa.
Uso: La memoria dinámica se utiliza a menudo para almacenar datos de
tamaño variable, mientras que la memoria estática se utiliza a menudo para
almacenar datos de tamaño fijo.
Liberación: La memoria dinámica debe liberarse explícitamente por el
programador, mientras que la memoria estática se libera automáticamente
al final de la ejecución del programa.

5. Escriba el procedimiento (crear, insertar, eliminar) para implementar una pila en


memoria dinámica, debes explicar que hace cada línea de codigo. 6pts

La siguiente función crea una pila vacía en memoria dinámica:

C
struct pila *crear_pila() {
struct pila *pila = malloc(sizeof(struct pila));
if (pila == NULL) {
return NULL;
}

pila->tope = NULL;
return pila;
}

Esta función utiliza la función malloc() para asignar memoria para la estructura
de datos de la pila. Si la asignación falla, la función devuelve NULL.

La siguiente función inserta un elemento en la parte superior de la pila:


C
void insertar_pila(struct pila *pila, int elemento) {
struct nodo *nuevo_nodo = malloc(sizeof(struct nodo));
if (nuevo_nodo == NULL) {
return;
}

nuevo_nodo->elemento = elemento;
nuevo_nodo->siguiente = pila->tope;
pila->tope = nuevo_nodo;
}

Esta función utiliza la función malloc() para asignar memoria para un nuevo
nodo. Si la asignación falla, la función se detiene.

Luego, la función asigna el elemento elemento a la variable elemento del


nuevo nodo. Luego, la función establece el siguiente puntero del nuevo nodo
en el siguiente puntero de la pila. Finalmente, la función establece el siguiente
puntero de la pila en el nuevo nodo.

La siguiente función elimina el elemento superior de la pila:

C
int eliminar_pila(struct pila *pila) {
if (pila->tope == NULL) {
return -1;
}

int elemento = pila->tope->elemento;


struct nodo *nodo_a_eliminar = pila->tope;
pila->tope = pila->tope->siguiente;
free(nodo_a_eliminar);
return elemento;
}

Esta función comprueba si la pila está vacía. Si la pila está vacía, la función
devuelve -1.

De lo contrario, la función asigna el elemento superior de la pila a la variable


elemento. Luego, la función libera la estructura del nodo superior. Finalmente,

la función establece el siguiente puntero de la pila en el siguiente puntero del


nodo superior.

Explicación de las líneas de código

La función crear_pila() crea una nueva estructura de datos de pila y asigna


la dirección de memoria de la estructura a la variable pila. Si la asignación
falla, la función devuelve NULL.

La función insertar_pila() crea una nueva estructura de nodo y asigna el


elemento elemento a la variable elemento del nuevo nodo. Luego, la función
establece el siguiente puntero del nuevo nodo en el siguiente puntero de la
pila. Finalmente, la función establece el siguiente puntero de la pila en el nuevo
nodo.

La función eliminar_pila() comprueba si la pila está vacía. Si la pila está


vacía, la función devuelve -1. De lo contrario, la función asigna el elemento
superior de la pila a la variable elemento. Luego, la función libera la estructura
de nodo superior. Finalmente, la función establece el siguiente puntero de la
pila en el siguiente puntero del nodo superior.
6. Escriba el procedimiento (crear, insertar, eliminar) para implementar una cola en
memoria dinámica, debes explicar que hace cada línea de codigo. 6pts

La siguiente función crea una cola vacía en memoria dinámica:

C
struct cola *crear_cola() {
struct cola *cola = malloc(sizeof(struct cola));
if (cola == NULL) {
return NULL;
}

cola->primero = NULL;
cola->ultimo = NULL;
return cola;
}

Esta función utiliza la función malloc() para asignar memoria para la estructura
de datos de la cola. Si la asignación falla, la función devuelve NULL.

La siguiente función inserta un elemento en la parte final de la cola:

C
void insertar_cola(struct cola *cola, int elemento) {
struct nodo *nuevo_nodo = malloc(sizeof(struct nodo));
if (nuevo_nodo == NULL) {
return;
}

nuevo_nodo->elemento = elemento;
nuevo_nodo->siguiente = NULL;
if (cola->primero == NULL) {
cola->primero = nuevo_nodo;
} else {
cola->ultimo->siguiente = nuevo_nodo;
}

cola->ultimo = nuevo_nodo;
}

Esta función utiliza la función malloc() para asignar memoria para un nuevo
nodo. Si la asignación falla, la función se detiene.

Luego, la función asigna el elemento elemento a la variable elemento del


nuevo nodo. Luego, la función establece el siguiente puntero del nuevo nodo
en NULL.

Si la cola está vacía, la función establece el puntero primero de la cola en el


nuevo nodo. De lo contrario, la función establece el siguiente puntero del nodo
final de la cola en el nuevo nodo. Finalmente, la función establece el puntero
ultimo de la cola en el nuevo nodo.

La siguiente función elimina el elemento inicial de la cola:

C
int eliminar_cola(struct cola *cola) {
if (cola->primero == NULL) {
return -1;
}

int elemento = cola->primero->elemento;


struct nodo *nodo_a_eliminar = cola->primero;
cola->primero = cola->primero->siguiente;
free(nodo_a_eliminar);
return elemento;
}

Esta función comprueba si la cola está vacía. Si la cola está vacía, la función
devuelve -1.

De lo contrario, la función asigna el elemento inicial de la cola a la variable


elemento. Luego, la función libera la estructura del nodo inicial. Finalmente, la

función establece el puntero primero de la cola en el siguiente puntero del


nodo inicial.

También podría gustarte