Kauslinux
Por: Agenor Nascimento • 5/4/2015 • Trabalho acadêmico • 309 Palavras (2 Páginas) • 335 Visualizações
nclude <stdio.h>
#include <stdlib.h>
struct Node{
int num;
struct Node *prox;
};
typedef struct Node node;
int tam;
void inicia(node *LISTA);
int menu(void);
void opcao(node *LISTA, int op);
node *criaNo();
void insereFim(node *LISTA);
void insereInicio(node *LISTA);
void exibe(node *LISTA);
void libera(node *LISTA);
void insere (node *LISTA);
node *retiraInicio(node *LISTA);
node *retiraFim(node *LISTA);
node *retira(node *LISTA);
int main(void)
{
node *LISTA = (node *) malloc(sizeof(node));
if(!LISTA){
printf("Sem memoria disponivel!\n");
exit(1);
}else{
inicia(LISTA);
int opt;
do{
opt=menu();
opcao(LISTA,opt);
}while(opt);
free(LISTA);
return 0;
}
}
void inicia(node *LISTA)
{
LISTA->prox = NULL;
tam=0;
}
int menu(void)
{
int opt;
printf("Escolha a opcao\n");
printf("0. Sair\n");
printf("1. Zerar lista\n");
printf("2. Exibir lista\n");
printf("3. Adicionar node no inicio\n");
printf("4. Adicionar node no final\n");
printf("5. Escolher onde inserir\n");
printf("6. Retirar do inicio\n");
printf("7. Retirar do fim\n");
printf("8. Escolher de onde tirar\n");
printf("Opcao: "); scanf("%d", &opt);
return opt;
}
void opcao(node *LISTA, int op)
{
node *tmp;
switch(op){
case 0:
libera(LISTA);
break;
case 1:
libera(LISTA);
inicia(LISTA);
break;
case 2:
exibe(LISTA);
break;
case 3:
insereInicio(LISTA);
break;
case 4:
insereFim(LISTA);
break;
case 5:
insere(LISTA);
break;
case 6:
tmp= retiraInicio(LISTA);
printf("Retirado: %3d\n\n", tmp->num);
break;
case 7:
tmp= retiraFim(LISTA);
printf("Retirado: %3d\n\n", tmp->num);
break;
case 8:
tmp= retira(LISTA);
printf("Retirado: %3d\n\n", tmp->num);
break;
default:
printf("Comando invalido\n\n");
}
}
int vazia(node *LISTA)
{
if(LISTA->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);
...