Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- #include <stdbool.h>
- #include <string.h>
- //VARIAVEIS GLOBAIS
- int tampilha;
- struct figuras
- {
- char nome[100];
- char idade[5];
- char selecao[100];
- };
- typedef struct elemento* Pilha;
- struct elemento
- {
- struct figuras dados;
- struct elemento *prox;
- };
- typedef struct elemento Elem;
- //FUNCOES
- Pilha* cria_Pilha();
- int Pilha_vazia(Pilha* pi);
- int insere_Pilha(Pilha* pi, struct figuras jog, int *p);
- int tamanho_Pilha(Pilha *pi);
- void imprime_Pilha(Pilha* pi);
- bool Pilha_cheia(Pilha* pi);
- bool remove_Pilha(Pilha* pi, int *p);
- void libera_Pilha(Pilha* pi);
- void quebra(char dados[], struct figuras *jog);
- void menu()
- {
- fflush(stdin);
- printf("Digite qualquer tecla para continuar\n");
- getchar();
- fflush(stdin);
- system("cls");
- printf("Digite uma opcao\n");
- printf("1 - Criar Pilha Dinamicamente\n2 - Inserir Elementos\n3 - Remover Elementos\n4 - Imprimir Elementos\n5 - Checar Pilha vazia\n6 - Checar Pilha Cheia\n7 - Destruir Pilha\n8 - Sair\n");
- }
- int main()
- {
- struct figuras jog;
- Pilha *pi;
- int tam_Pilha;
- int controlador = 0;
- int *p = &controlador;
- controlador = 0;
- int op;
- do{
- menu();
- scanf("%d", &op);
- if(op == 1)//CRIAR
- {
- system("cls");
- printf("Digite o Tamanho da sua Pilha\n");
- scanf("%d", &tampilha);
- pi = cria_Pilha();
- }else
- if(op == 2)//PUSh (INSERIR)
- {
- system("cls");
- fflush(stdin);
- insere_Pilha(pi, jog, p);
- }else
- if(op == 3)//POP(remover1)
- {
- system("cls");
- if(Pilha_vazia(pi))
- {
- printf("Erro na remocao: Pilha vazia! \n");
- }else{
- remove_Pilha(pi, p);
- printf("Dados removidos com sucesso\n");
- }
- }else
- if(op == 4)//IMRPIMIR
- {
- system("cls");
- imprime_Pilha(pi);
- }else
- if(op == 5)//Checar pilha vazia
- {
- system("cls");
- if(Pilha_vazia(pi))
- {
- printf("\t---A Pilha vazia---\n");
- }else{
- printf("\t---A pilha nao esta vazia---\n");
- tam_Pilha = tamanho_Pilha(pi);
- printf("Possui %d elementos\n", tam_Pilha);
- }
- }else
- if(op == 6)//CHECAR PILHA CHEIA
- {
- system("cls");
- if(Pilha_cheia(pi))
- {
- printf("A Pilha esta cheia\n");
- }else{
- printf("Ainda restam %d nos\n", tampilha - *p);
- }
- }else
- if(op == 7)
- {//DESTRUIR PILHA
- system("cls");
- libera_Pilha(pi);
- printf("Memoria alocada liberada\n");
- }else{
- system("cls");
- printf("programa encerrado\n");
- exit(0);
- }
- }while(op != 8);
- return 0;
- }
- Pilha* cria_Pilha()
- {
- Pilha* pi = (Pilha*) malloc(sizeof(Pilha));
- if(pi != NULL){
- *pi = NULL;
- }
- return pi;
- }
- //PILHA VAZIA
- int Pilha_vazia(Pilha* pi)
- {
- if(pi == NULL)
- return 1;
- if(*pi == NULL)
- return 1;
- return 0;
- }
- //PSUH
- int insere_Pilha(Pilha* pi, struct figuras jog, int *p)
- {
- system("cls");
- char info[200];
- if(*p == tampilha)
- {
- printf("Tamanho maximo atingido\n");
- return 0;
- }
- else{
- printf("Digite as informacoes\n Ao digitar 'stop' o programa sera encerrado\n");
- gets(info);
- if(strcmp(info, "stop")== 0)
- {
- printf("Acabou\n");
- exit(0);
- }
- quebra(info, &jog);//FUNCAO QUBRA STRING
- if(pi == NULL)
- return 0;
- Elem* no;
- no = (Elem*) malloc(sizeof(Elem));
- if(no == NULL)
- return 0;
- no->dados = jog;
- no->prox = (*pi);
- *pi = no;
- ++*p;
- return 1;
- }
- }
- //TAMANHO
- int tamanho_Pilha(Pilha *pi)
- {
- if(pi == NULL)
- return 0;
- int cont = 0;
- Elem* no = *pi;
- while(no != NULL){
- cont++;
- no = no->prox;
- }
- return cont;
- }
- //QUEBRAR STRING
- void quebra(char dados[], struct figuras *jog)
- {
- char nome[50], idade[100], selecao[100];
- int i, pos = 0, j;
- for(i=0; dados[i] != ' '; i++)//quebrando nome
- {
- nome[i] = dados[i];
- pos = i;
- }
- nome[i] = '\0';
- strcpy(jog->nome, nome);
- for(i=pos+2, j =0; dados[i] != ' '; i++, j++)//quebrando idade
- {
- idade[j] = dados[i];
- pos = i;
- }
- idade[j] = '\0';
- strcpy(jog->idade, idade);
- for(i=pos+1, j=0; dados[i]!= '\0'; i++, j++)
- {
- selecao[j] = dados[i];
- }
- selecao[j] = '\0';
- strcpy(jog->selecao, selecao);
- }
- //IMPRIME
- void imprime_Pilha(Pilha* pi)
- {
- if(Pilha_vazia(pi))
- {
- printf("---PILHA VAZIA---\n");
- //return ;
- }
- Elem* no = *pi;
- while(no != NULL)
- {
- printf("-----Figurinhas-----\n");
- printf("Nome: %s\n",no->dados.nome);
- printf("Idade: %s\n",no->dados.idade);
- printf("Selecao: %s\n", no->dados.selecao);
- printf("---------------------\n");
- no = no->prox;
- }
- }
- //PILHA CHEIA
- bool Pilha_cheia(Pilha* pi)
- {
- if(Pilha_vazia(pi))
- {
- printf("---PILHA VAZIA---\n");
- return false;
- }else {
- int tam = tamanho_Pilha(pi);
- if(tam == tampilha){
- return true;
- }else{
- return false;
- }
- }
- }
- //REMOVE
- bool remove_Pilha(Pilha* pi, int *p)
- {
- Elem *no = *pi;
- *pi = no->prox;
- free(no);
- --*p;
- return true;
- }
- //DELETA TODA PILHA
- void libera_Pilha(Pilha* pi)
- {
- if(pi != NULL){
- Elem* no;
- while((*pi) != NULL){
- no = *pi;
- *pi = (*pi)->prox;
- free(no);
- }
- free(pi);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement