[Linguagem C] - Trabalho Estruturas de Dados
Por: lucasambrosi • 23/8/2017 • Abstract • 403 Palavras (2 Páginas) • 517 Visualizações
// TRABALHO ESTRUTURAS DE DADOS - G2
// ALUNO: LUCAS AMBROSI DERROSSI
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>
void inserir();
void listar();
void pesquisar();
void remover();
struct listadupla{
struct listadupla *antes;
int sala, ano;
char nome[10];
struct listadupla *depois;
};
int saladigitada, anodigitado;
char nomedigitado[10];
struct listadupla *inicial=NULL, *novo, *aux, *anterior, *pos;
main(){
int op;
while(op != 5){
system("cls");
printf("\n ========MENU DE OPCOES========\n");
printf("\n [1] - Inserir computador");
printf("\n [2] - Listar computadores");
printf("\n [3] - Pesquisar computador");
printf("\n [4] - Remover computador");
printf("\n [5] - Sair");
printf("\n\n\n Opcao escolhida: ");
scanf("%i",&op);
switch(op){
case 1:
inserir();
break;
case 2:
listar();
break;
case 3:
pesquisar();
break;
case 4:
remover();
break;
case 5:
printf("\n Tecle algo para sair...");
getch();
break;
default:
printf("\n Opcao invalida. Tecle algo para voltar ao menu.");
getch();
break;
}
}
}
/*==================================
----------FUNCAO INSERIR-----------
===================================*/
void inserir(){
system("cls");
printf("\n =========INSERIR COMPUTADOR=========");
printf("\n Digite o nome desejado.................: ");
fflush(stdin);
fgets(nomedigitado,10,stdin);
printf("\n Digite a sala do computador............: ");
scanf("%i",&saladigitada);
printf("\n Digite o ano de aquisicao do computador: ");
scanf("%i",&anodigitado);
if(inicial==NULL){
novo = (struct listadupla*)malloc(sizeof(struct listadupla));
novo->antes = NULL;
strcpy(novo->nome,nomedigitado);
novo->sala = saladigitada;
novo->ano = anodigitado;
novo->depois = NULL;
inicial = novo;
}
else{
if(strcmp(inicial->nome,nomedigitado) >= 0){
novo = (struct listadupla*)malloc(sizeof(struct listadupla));
novo->antes = NULL;
strcpy(novo->nome,nomedigitado);
novo->sala = saladigitada;
novo->ano = anodigitado;
novo->depois = inicial;
inicial->antes = novo;
inicial = novo;
}
else{
anterior = inicial;
aux = inicial;
while((strcmp(aux->nome,nomedigitado) <= 0) && (aux->depois != NULL)){
anterior = aux;
aux = aux->depois;
}
if(aux->depois != NULL){
novo = (struct listadupla*)malloc(sizeof(struct listadupla));
novo->antes = anterior;
...