Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct{
- double valor_carro;
- }Valor_carro;
- typedef struct{
- int ano_Fabricacao;
- char modelo[30];
- char marca[30];
- Valor_carro valor_Carro;
- }Info_carro;
- typedef struct elemento{
- Info_carro info;
- struct elemento *proximo;
- }Elemento;
- Info_carro ler_carro(){
- Info_carro info;
- printf("Digite o ano de fabricação do carro: ");
- scanf("%d", &info.ano_Fabricacao);
- printf("Digite o nome do modelo do carro: ");
- scanf("%s", info.modelo);
- printf("Digite a marca do carro: ");
- scanf("%s", info.marca);
- printf("Digite o valor do carro: ");
- scanf("%lf", &info.valor_Carro.valor_carro);
- return info;
- }
- void mostrar_Carro(Info_carro info){
- printf("| Ano de fabricação do carro: %d\n", info.ano_Fabricacao);
- printf("| Esse é o modelo do carro: %s\n", info.modelo);
- printf("| O carro é da marca: %s\n",info.marca);
- printf("| O valor do carro é: %f\n", info.valor_Carro.valor_carro);
- }
- Elemento* colocar_Na_Pilha(Elemento *topo){
- Elemento *novo = malloc(sizeof(Elemento));
- if(novo != NULL){
- novo->info = ler_carro();
- novo->proximo = topo;
- return novo;
- }
- else
- printf("\nErro: Memória Não Alocada!\n");
- return NULL;
- }
- Elemento* tirar_Da_Pilha(Elemento **topo){
- if(*topo != NULL){
- Elemento *remover = *topo;
- *topo = remover->proximo;
- return remover;
- }
- else
- printf("\nPilha vazia!\n");
- return NULL;
- }
- void mostrar_Pilha(Elemento *topo){
- printf("\n");
- if(topo == NULL){
- printf("-------------- PILHA VAZIA ---------------\n");
- return NULL;
- }
- printf("|---------- INÍCIO DA PILHA ------------|\n");
- while(topo != NULL){
- printf("\n");
- mostrar_Carro(topo->info);
- printf("\n");
- topo = topo->proximo;
- }
- printf("|------------- FIM PILHA ---------------|\n");
- printf("\n");
- }
- int main(){
- Elemento *remover, *topo = NULL;
- int opcao;
- do{
- printf("\n");
- printf("|--------- Comandos Para Operar a Pilha: -----------|\n");
- printf("| |\n");
- printf("|------------------- 1 - Empilhar ------------------|\n");
- printf("|------------------- 2 - Desempilhar ---------------|\n");
- printf("|------------------- 3 - Imprimir ------------------|\n");
- printf("|------------------- 0 - Sair ----------------------|\n");
- printf("\n");
- scanf("%d", &opcao);
- getchar();
- switch(opcao){
- case 1:
- topo = colocar_Na_Pilha(topo);
- break;
- case 2:
- remover = tirar_Da_Pilha(&topo);
- if(remover){
- printf("\nElemento removido com sucesso!\n");
- mostrar_Carro(remover->info);
- free(remover);
- }
- else
- printf("\nSem nó a remover.\n");
- break;
- case 3:
- mostrar_Pilha(topo);
- break;
- default:
- if(opcao != 0)
- printf("\nOpcao invalida!!!\n");
- }
- }while(opcao != 0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment