#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <new>
typedef struct dados{
char nome[20];
char profissao[20];
int idade;
float salario;
dados *prox;
dados *anterior = NULL;
}cliente;
typedef struct tipoFila{
cliente *inicio;
cliente *fim;
}tFila;
cliente *cabeca = new cliente;
cliente *aux = cabeca;
void filavazia(tFila *p){
cliente *novo = new cliente;
p->inicio = NULL;
p->fim = NULL;
}
void inserir(tFila *p){
cliente *novo = new cliente;
printf("\t\nººº Voce escolheu a opcao cadastrar cliente ººº\n\n");
printf("Nome: ");
scanf("%s", &novo->nome);
printf("Profissao: ");
scanf("%s", &novo->profissao);
printf("Idade: ");
scanf("%d", &novo->idade);
printf("Salario: ");
scanf("%f", &novo->salario);
/*fim->prox = novo;
fim = fim->prox;
novo->prox = inicio;*/
novo->prox = NULL;
if(p->inicio == NULL){
p->inicio = novo;
p->fim = novo;
}else{
p->fim->prox = novo;
p->fim = novo;
}
printf("\t\nSALVO\n\n");
}
void listar(tFila *p){
cliente *aux = p->inicio;
if(aux == NULL){
printf("ERRO - Fila Vazia\n\n");
return;
}
printf("\tººº CLIENTES CADASTRADOS ººº\n\n");
while(aux != NULL){
printf("Nome: %s\n", aux->nome);
printf("Profissao: %s\n", aux->profissao);
printf("Idade: %d\n", aux->idade);
printf("Salario: %.1f\n", aux->salario);
printf("\n");
aux = aux->prox;
}
}
void remover(tFila *p){
cliente *aux;
cliente *excluir;
aux = p->inicio->prox;
excluir = p->inicio;
if(p->inicio->prox == NULL){
printf("ERRO - Fila Vazia\n\n");
return;
}else{
excluir->prox = aux->prox;
aux = NULL;
printf("\tRemovido com Sucesso\n\n");
}
}
void listarinvertido(tFila *p){
cliente *aux = p->fim;
if(aux->prox == NULL){
printf("ERRO - Fila Vazia\n\n");
return;
}
printf("\tººº CLIENTES CADASTRADOS ººº\n\n");
while(aux != NULL){
printf("Nome: %s\n", aux->nome);
printf("Profissao: %s\n", aux->profissao);
printf("Idade: %d\n", aux->idade);
printf("Salario: %.1f\n", aux->salario);
printf("\n");
aux = aux->anterior;
}
}
void inverterElementos(cliente *e, cliente *ant){
if(e->prox != NULL){
inverterElementos(e->prox, e);
e->prox = ant;
}
}
void inverter(tFila *p){
inverterElementos(p->inicio, NULL);
cliente *aux = p->inicio;
p->inicio = p->fim;
p->fim = aux;
}
int main(){
int op;
tFila p;
filavazia(&p);
do{
printf("\t ººº MENU ººº\n");
printf("1- Inserir \n");
printf("2- Remover \n");
printf("3- Listar \n");
printf("4- Listar invertido \n");
printf("5- Sair\n");
printf("Escolha uma opcao e digite ENTER: ");
scanf("%d", &op);
printf("\n");
system("CLS");
switch(op){
case 1:
inserir(&p);
break;
case 2:
remover(&p);
break;
case 3:
listar(&p);
break;
case 4:
inverter(&p);
listarinvertido(&p);
break;
case 5:
break;
}
}while (op!= 5);
return 0;
}