Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* CABECERA */
- /*
- * File: preg15.h
- * Author: alulab11
- *
- * Created on 2 de julio de 2014, 03:40 PM
- */
- #ifndef PREG15_H
- #define PREG15_H
- #define MAX 10
- typedef int TElemento;
- typedef struct nodoPila{
- TElemento elem;
- struct nodoPila* ptrSig;
- }TNodoPila;
- typedef struct nodoCjtoPilas{
- TNodoPila *cima;
- struct nodoCjtoPilas* ptrSig;
- int cantElem;
- int capacidad;
- }TNodoCjtoPilas;
- typedef struct CjtoPilas{
- TNodoCjtoPilas *inicio;
- }TCjtoPilas;
- void crearCjtoPilas(TCjtoPilas*);
- void push(TCjtoPilas*,TElemento);
- void pop(TCjtoPilas*);
- int esCjtoPilasVacio(TCjtoPilas*);
- #endif /* PREG15_H */
- /* IMPLEMENTACION */
- #include <stdlib.h>
- #include <stdio.h>
- #include "preg15.h"
- #define MAX 10
- void crearCjtoPilas(TCjtoPilas* cjtoPilas){
- cjtoPilas->inicio = NULL;
- }
- void push(TCjtoPilas* cjtoPilas,TElemento elem){
- TNodoPila *ptrNuevo;
- ptrNuevo = (TNodoPila*)malloc(sizeof(TNodoPila));
- ptrNuevo->elem = elem;
- ptrNuevo->ptrSig = NULL;
- TNodoCjtoPilas *ptrRec;
- ptrRec = cjtoPilas->inicio;
- if (ptrRec == NULL){
- TNodoCjtoPilas *pilaNueva;
- cjtoPilas->inicio = pilaNueva;
- pilaNueva->cantElem = 1;
- pilaNueva->capacidad = MAX;
- pilaNueva->cima = ptrNuevo;
- }
- else{
- while(ptrRec->cantElem < ptrRec->capacidad)
- ptrRec = ptrRec->ptrSig;
- if (ptrRec == NULL){
- TNodoCjtoPilas *pilaNueva2;
- ptrRec->ptrSig = pilaNueva2;
- pilaNueva2->cantElem = 1;
- pilaNueva2->capacidad = MAX;
- pilaNueva2->cima = ptrNuevo;
- }
- else{
- ptrNuevo->ptrSig = ptrRec->cima;
- ptrRec->cima = ptrNuevo;
- (ptrRec->cantElem)++;
- }
- }
- }
- void pop(TCjtoPilas* cjtoPilas){
- if(cjtoPilas->inicio == NULL)
- printf("No se puede desapilar en una pila vacía\n");
- else{
- TNodoPila* ptrEliminar;
- ptrEliminar = cjtoPilas->inicio->cima;
- cjtoPilas->inicio->cima = cjtoPilas->inicio->cima->ptrSig;
- if (cjtoPilas->inicio->cantElem == 1){
- TNodoCjtoPilas * cjtoEliminar;
- cjtoEliminar = cjtoPilas->inicio;
- cjtoPilas->inicio = cjtoPilas->inicio->ptrSig;
- free(cjtoEliminar);
- }else{
- (cjtoPilas->inicio->cantElem)--;
- }
- free(ptrEliminar);
- }
- }
- int esCjtoPilasVacio(TCjtoPilas* cjtoPilas){
- if(cjtoPilas->inicio == NULL)
- return 1;
- else
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement