Apostila processo penal

Disponível somente no TrabalhosFeitos
  • Páginas : 9 (2172 palavras )
  • Download(s) : 0
  • Publicado : 20 de fevereiro de 2013
Ler documento completo
Amostra do texto
LISTA ENCADEADA DINÂMICA
#include
#include
#include

typedef struct{
int cod;
char nome[50];
int idade;
}TPessoa;

typedef struct cx{
TPessoa elem;
struct cx *prox;
}Caixa;

typedef Caixa *ponteiro;

typedef struct{
ponteiro prim, ult;
int cont;
}ListaEncDinamica;

void criarListaVazia(ListaEncDinamica *L);
intverificaListaVazia(ListaEncDinamica L);
void insereElementoLista(ListaEncDinamica *L , TPessoa X);
void imprimeLista(ListaEncDinamica L);
void pesquisaCliente(ListaEncDinamica L , int codigo);
int MENU();
TPessoa coletaDados();
void removeElementoLista(ListaEncDinamica *L , TPessoa *X);
TPessoa coletaDadosRemocaoEBusca();

int main(){
TPessoa cliente;
ListaEncDinamica lista;
criarListaVazia(&lista);int opcao;
do{
opcao = MENU();
if (opcao == 1){
cliente = coletaDados();
insereElementoLista(&lista , cliente);
}
else if (opcao == 2){
cliente = coletaDadosRemocaoEBusca();
removeElementoLista(&lista,&cliente);
}
else if (opcao == 3){
imprimeLista(lista);
}else if (opcao == 4){
cliente = coletaDadosRemocaoEBusca();
pesquisaCliente(lista , cliente.cod);
}
system("pause");
system("cls");
}while (opcao != 0);
return 0;
}

// CRIA UMA LISTA ENCADEADA DINAMICA VAZIA
void criarListaVazia(ListaEncDinamica *L){
ponteiro p = (ponteiro)malloc(sizeof(Caixa));
L->prim = p;p->prox = NULL;
p->elem.cod=0;
L->cont=0;

}

// VERIFICA SE A LISTA ESTÁ VAZIA OU NÃO - (se for verdadeiro a condição, então a lista está vazia)
int verificaListaVazia(ListaEncDinamica L){
return (L.prim==L.ult);
}

// INSERE ELEMENTOS NA LISTA
void insereElementoLista(ListaEncDinamica *L , TPessoa X){
ponteiro p;
p=(ponteiro)malloc(sizeof(Caixa));
p->elem = X;p->prox = NULL;
if(L->prim->prox == NULL){
L->prim->prox = p; // Lista inicializada
}
else{
ponteiro aux;
//aux = (ponteiro)malloc(sizeof(Caixa));
aux = L->prim;
while (aux->prox != NULL){
aux = aux->prox;
if (X.cod == aux->elem.cod){ // Nessa condição, verifica-se se o elemento já foi adicionadoanteriormente, se sim, liberamos o ponteiro de caixa p
printf("Cliente ja cadastrado !");
free(p);
return 0; // para sair da função
}
}
aux = L->prim;
// Nesta varredura, verificamos o posicionamento correto para inserção do novo elemento
while(aux->prox != NULL && X.cod > aux->prox->elem.cod){
aux= aux->prox;
}
if(aux == NULL){ // Se o aux for NULL o novo elemento é o maior a ser adicionado portanto, é colocado no final
aux->prox = p;
p->prox = NULL;
}
else{ // Senão, o novo elemento deve ser colocado entre outros dois elementos
p->prox = aux->prox;
aux->prox = p;
}
L->cont++;
}}

// IMPRIME A LISTA ENCADEADA DINAMICAMENTE
void imprimeLista(ListaEncDinamica L){
if(L.prim->prox == NULL){
printf ("\nA lista ainda esta vazia.\n\n");
}
else{
ponteiro aux;
aux=L.prim;
while (aux->prox != NULL){
aux = aux->prox;
printf("\n\nCodigo do cliente: %d\n" ,aux->elem.cod);
printf("Nome: %s\n",aux->elem.nome);
printf("Idade: %d\n" ,aux->elem.idade);
}
printf ("Existe(m) %d cliente(s) cadastrado(s) na lista.\n\n" ,L.cont+1);
}
}

// PESQUISA DETERMINADO CLIENTE COM UM CÓDIGO X
void pesquisaCliente(ListaEncDinamica L , int codigo){
ponteiro p;
p=L.prim->prox;
int flag=0;
while(p != NULL){
if(p->elem.cod == codigo){...
tracking img