Last active
October 25, 2023 21:50
-
-
Save kalimalrazif/6f420a59d33bb5daad136e2dad4a3a4c to your computer and use it in GitHub Desktop.
Implementacion de pila dinamica
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Libreria de manejo de entrada y salida. | |
*/ | |
#include <stdio.h> | |
/* | |
* Esta libreria nos permite solicitar pedazos de memoria al sistema operativo, que nos devolvera un la | |
* direcion de memoria en donde empieza el bloque. | |
*/ | |
#include <malloc.h> | |
/* | |
* Estructura que representa un nodo o elemento en la pila. | |
*/ | |
struct elemento { | |
int dato; | |
struct elemento *next; | |
}; | |
/* | |
* Estructura para representar la pila. | |
*/ | |
struct pila { | |
struct elemento *frente; | |
int tamano; | |
}; | |
int crear(struct pila *); | |
int apilar(struct pila *, struct elemento); | |
int desapilar(struct pila *, struct elemento *); | |
int estaVacia(struct pila); | |
int main() | |
{ | |
struct pila mi_pila; | |
struct elemento e1; | |
struct elemento e2; | |
struct elemento e3; | |
crear(&mi_pila); | |
e1.dato = 200; | |
e2.dato = 100; | |
e3.dato = 1; | |
apilar(&mi_pila, e1); | |
apilar(&mi_pila, e2); | |
apilar(&mi_pila, e3); | |
e1.dato = 10000; | |
e2.dato = -45; | |
e3.dato = 'A'; | |
struct elemento elemento_sacado; | |
desapilar (&mi_pila, &elemento_sacado); | |
return (0); | |
} | |
/* | |
* Inicializamos la estructura de la pila, ponemos el valor de frente en NULL y el contador de objetos en 0 | |
*/ | |
int crear(struct pila *p) { | |
p->frente = NULL; | |
p->tamano = 0; | |
return 1; | |
} | |
int apilar(struct pila *p, struct elemento elemento){ | |
/* Creamos un elemento nuevecito para meterlo en la pila | |
* y que el usuario no pudeda luego hacerle nada! | |
* Copiamos los datos del usuario en nuestro nuevo elemento. | |
*/ | |
struct elemento *nuevo = (struct elemento *) malloc(sizeof(struct elemento)); | |
// Si por cualquier situacion el OS no puede asignarnos mas memoria la variable queda en NULL, si este | |
// es el caso nosotros regresaremos un -1 indicando que la operacion fallo. | |
if (nuevo == NULL) { return -1; } | |
nuevo->dato = elemento.dato; | |
nuevo->next = NULL; | |
/* Ahora metemos ese nuevo elemento en la pila, | |
* ahora cualquier cambio que haga el usuario no nos afectara | |
* en nada | |
*/ | |
nuevo->next = p->frente; | |
p->frente = nuevo; | |
p->tamano++; | |
return 1; | |
} | |
int desapilar(struct pila *p, struct elemento *elemento){ | |
// si la pila esta vacia retornamos -1 | |
if (estaVacia(*p) ) { return -1; } | |
// COPIAMOS el dato a retornar al usuario. | |
elemento->dato = p->frente->dato; | |
p->frente = p->frente->next; | |
p->tamano--; | |
} | |
int estaVacia(struct pila p){ | |
if (p.tamano == 0) { return 1; } | |
//if (p.frente == NULL) { return 1; } | |
return 0; | |
} | |
int tamano(struct pila p){ | |
return p.tamano; | |
} |
Author
kalimalrazif
commented
Jun 4, 2020
via email
Me temo que entonces la pila no es la estructura de datos que estas
buscando, de pronto tal vez un arreglo de una estructura que tenga el
carnet y un arreglo con el resto de los datos.
Nom
Atte.
Nomar Mora
…On Wed, Jun 3, 2020 at 6:41 PM ErickMonterroso ***@***.***> wrote:
***@***.**** commented on this gist.
------------------------------
Tengo un .CSV que tiene varios campos
Carnet1,Clase1,fecha,nota
Carnet1,Clase2,fecha,nota
Carnet2,Clase1,fecha,nota
Carnet3,Clase1,fecha,nota
Como puedes ver el carnet se repite entonces no se como podria hacerlo
para que se apile pero con todos los datos, estoy trabado en eso la verdad.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<https://gist.github.com/6f420a59d33bb5daad136e2dad4a3a4c#gistcomment-3328830>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAWHYFI7WJU4TB63SQGL2KDRU3GQLANCNFSM4NR7GWQQ>
.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment