A ESTRUTURA DE DADOS
Por: Marcos Messias • 16/11/2020 • Projeto de pesquisa • 618 Palavras (3 Páginas) • 124 Visualizações
[pic 1]
TRABALHO SEMESTRAL ESTRUTURA DE DADOS
Aluno: Marcos Messias Borges
RA: N4202E-0
Campus: Cidade Universitária
CÓDIGO FONTE
#include <stdio.h>
#include <stdlib.h>
struct Node{ int num; struct Node *prox;
};
typedef struct Node node;
int tam;
int menu(void); void inicia(node *PILHA); void opcao(node *PILHA, int op); void exibe(node *PILHA); void libera(node *PILHA); void push(node *PILHA); node *pop(node *PILHA);
int main(void)
{
node *PILHA = (node *) malloc(sizeof(node)); if(!PILHA){ printf("Sem memoria disponivel!\n");
exit(1); }else{ inicia(PILHA); int opt;
do{ opt=menu(); opcao(PILHA,opt);
}while(opt);
free(PILHA); return 0;
}
}
void inicia(node *PILHA)
{
PILHA->prox = NULL; tam=0;
}
int menu(void)
{ int opt;
printf("Escolha a opcao\n"); printf("0. Sair\n"); printf("1. Zerar PILHA\n"); printf("2. Exibir PILHA\n"); printf("3. Adicionar elemento\n"); printf("4. Remover elemento\n"); printf("Opcao: "); scanf("%d", &opt);
return opt;
}
void opcao(node *PILHA, int op)
{
node *tmp; switch(op){ case 0: libera(PILHA); break;
case 1: libera(PILHA); inicia(PILHA); break;
case 2: exibe(PILHA); break;
case 3: push(PILHA); break;
case 4:
tmp= pop(PILHA); if(tmp != NULL) printf("Retirado: %3d\n\n", tmp->num); break;
default:
printf("Comando invalido\n\n");
}
}
int vazia(node *PILHA)
{
if(PILHA->prox == NULL) return 1; else return 0;
}
node *aloca()
{
node *novo=(node *) malloc(sizeof(node)); if(!novo){ printf("Sem memoria disponivel!\n");
exit(1);
}else{ printf("Novo elemento: "); scanf("%d", &novo->num); return novo;
}
}
void exibe(node *PILHA)
{
if(vazia(PILHA)){ printf("PILHA vazia!\n\n"); return ;
}
node *tmp; tmp = PILHA->prox; printf("PILHA:"); while( tmp != NULL){ printf("%5d", tmp->num); tmp = tmp->prox;
} printf("\n "); int count; for(count=0 ; count < tam ; count++)
...