/** * Lista estatica * @author Max do Val Machado * @version 2 01/2015 */ #include #include #define MAXTAM 6 #define bool short #define true 1 #define false 0 int array[MAXTAM+1]; // Elementos da pilha int primeiro; // Remove do indice "primeiro". int ultimo; // Insere no indice "ultimo". /** * Inicializacoes */ void start(){ primeiro = ultimo = 0; } /** * Insere um elemento na ultima posicao da * @param x int elemento a ser inserido. * @Se a fila estiver cheia. */ void inserir(int x) { //validar insercao if (((ultimo + 1) % MAXTAM) == primeiro) { printf("Erro ao inserir!"); exit(1); } array[ultimo] = x; ultimo = (ultimo + 1) % MAXTAM; } /** * Remove um elemento da primeira posicao da fila e movimenta * os demais elementos para o primeiro da mesma. * @return resp int elemento a ser removido. * @Se a fila estiver vazia. */ int remover() { //validar remocao if (primeiro == ultimo) { printf("Erro ao remover!"); exit(1); } int resp = array[primeiro]; primeiro = (primeiro + 1) % MAXTAM; return resp; } /** * Mostra os array separados por espacos. */ void mostrar (){ int i; printf("\n["); for(i = primeiro; i != ultimo; i = ((i + 1) % MAXTAM)) { printf(" %d", array[i]); } printf(" ]"); } /** * Retorna um bool indicando se a fila esta vazia * @return bool indicando se a fila esta vazia */ bool isVazia() { return (primeiro == ultimo); } int main(int argc, char** argv){ int x1, x2, x3; printf("\n==== FILA ESTATICA ===="); start(); inserir(5); inserir(7); inserir(8); inserir(9); printf("\nApos insercoes(5, 7, 8, 9): "); mostrar(); x1 = remover(); x2 = remover(); printf("\nApos remocoes (%d, %d):", x1, x2); mostrar(); inserir(3); inserir(4); printf("\nApos insercoes(3, 4): "); mostrar(); x1 = remover(); x2 = remover(); x3 = remover(); printf("\nApos remocoes (%d, %d, %d):", x1, x2, x3); mostrar(); inserir(4); inserir(5); printf("\nApos insercoes(4, 5): "); mostrar(); x1 = remover(); x2 = remover(); printf("\nApos remocoes (%d, %d):", x1, x2); mostrar(); inserir(6); inserir(7); printf("\nApos insercoes(6, 7): "); mostrar(); x1 = remover(); printf("\nApos remocao (%d):", x1); mostrar(); }