Separando par e impar na pilha em C
#include
#include
#include
typedef struct { int elements[10]; int top; // Índice que aponta o valor do topo int maxSize;
} Stack;
void inicializar( Stack *myStack ) { myStack->top = -1; myStack->maxSize = 10;
}
void inicializarPilhaOriginal( Stack *myStack ) { printf( "Inicializando a pilha\n" ); int index = 0; int value = 10; for( index; value>0; index++ ) { printf( "\tP[%d]=%d\n", index, value ); myStack->elements[ index ] = value--; } myStack->top = 9; myStack->maxSize = 10; printf( "Pilha inicializada!!\n" );
}
int peek( Stack *myStack ) { return myStack->elements[ myStack->top ];
}
/* * Verifica se a pilha está vazia * 1 - True * 0 - False **/ int isEmpty( Stack *myStack ) { if( myStack->top == -1 ) return 1; // Está vazio return 0;
}
/* * Verifica se a pilha está cheia * 1 - True * 0 - False **/ int isFull( Stack *myStack ) { if( myStack->top == myStack->maxSize-1 ) return 1; // Está cheia return 0;
}
/* * Retira o elemento do topo da pilha; * Retorna o elemento do topo; * -1 caso a pilha esteja vazia. **/ int pop( Stack *myStack ) { // Só pode retirar da pilha se exister elemento na pilha if( isEmpty( myStack ) ) return -1; return myStack->elements[ myStack->top-- ];
}
/* Coloca valor na pilha * 0 - Operação nao foi feita * 1 - Operação foi feita **/ int push( Stack *myStack, int element ) { if( isFull( myStack ) ) return 0; myStack->elements[ ++myStack->top ] = element; return 1;
}