Buscar

Tad Lista Dinâmica Simplesmente Encadeada, (Insere,Busca,Exclui,Odena (alfabétia), exibe)

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

TADLista.h
/* 
 * File: TADLista.h
 * Author: joao
 *
 * Created on 16 de Abril de 2016, 13:35
 */
#ifndef TADLISTA_H
#define	TADLISTA_H
#ifdef	__cplusplus
extern "C" {
#endif
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
 //Estrutura de Dados 
 struct No {
 char nome[40];
 struct No *prox;
 };
 typedef struct No tpPont;
 //Prototipos----------------------------------------------------------------
 void insere(tpPont **list, char nome[]);
 tpPont* busca(tpPont *list, char nome[]);
 void exclui(tpPont **list, char nome[]);
 void exibe(tpPont *lista);
 int getCont(tpPont *lista);
 void selecaoDireta(tpPont **list);
 //Funcoes-------------------------------------------------------------------
 /*insere(tpPont** ,char[])
 *@param **list - ponteiro para a lista ja inicializada = NULL
 *@param nome[] - string contendo nome
 * Insere novo nome no final da lista 
 */
 void insere(tpPont **list, char nome[]) {
 tpPont *aux, * nova = (tpPont*) malloc(sizeof (tpPont)); //Alocando espaço para nova caixa
 strcpy(nova->nome, nome);
 nova->prox = NULL;
 if (*list == NULL)
 *list = nova; //Se a lista esta vazia a lista sera a propria caixa criada
 else {
 aux = *list;
 while (aux->prox != NULL)//navegamos até a ultim posicao da lista 
 aux = aux->prox;
 aux->prox = nova; // Ligamos a nova caixa ao ponteiro final da lista
 }
 }
 //--------------------------------------------------------------------------
 /*exclui(tpPont** ,char[])
 *@param **list - ponteiro para a lista ja inicializada = NULL
 *@param nome[] - string contendo nome a procurar 
 * Busca um elemento na lista e retorna um ponteiro para o elemento ou NULL
 */
 tpPont* busca(tpPont *list, char nome[]) {
 tpPont *aux = list;
 while (aux != NULL && strcmp(aux->nome, nome) != 0)
 aux = aux->prox;
 return aux;
 }
 //--------------------------------------------------------------------------
 /*exclui(tpPont** ,char[])
 *@param **list - ponteiro para a lista ja inicializada = NULL
 *@param nome[] - string contendo nome a excluir 
 * Exclui um determinado nome na lista
 */
 void exclui(tpPont **list, char nome[]) {
 tpPont *aux = *list, *ant = NULL;
 if (aux != NULL) {
 if (aux->prox == NULL) {//Quando so ha um elemento na lista
 free(aux);
 *list = NULL;
 } else {
 //efetuamos uma busca(nao podemos usar) a funcao busca pois necessitamos do elemento anterior
 while (aux->prox != NULL && strcmp(aux->nome, nome) != 0) {
 ant = aux;
 aux = aux->prox;
 }
 if (strcmp(aux->nome, nome) != 0) {//confirmamos se a busca realmente encontrou o elemento
 ant->prox = aux->prox; //Isolamos o elemento
 free(aux); //liberamos a memoria
 }
 }
 }
 }
 //------------------------------------------------------------------------------
 void exibe(tpPont *lista) {
 while (lista != NULL) {
 printf("Nome:[%s]\n", lista->nome);
 lista = lista->prox;
 }
 }
 //------------------------------------------------------------------------------
 /*getConti(tpPont*)
 *@param *list - ponteiro para a lista 
 * Retorna o numero de nomes contidos na lista
 */
 int getCont(tpPont *lista) {
 int cont = 0;
 while (lista != NULL) {
 cont++;
 lista = lista->prox;
 }
 return cont;
 }
 //----------------------------------------------------------------------------- 
 /*selecaoDireta(tpPont** )
 *@param **list - ponteiro para a lista ja inicializada = NULL
 *Ordena a lista em ordem alfabetica pelo metodo de selecao direta
 */
 void selecaoDireta(tpPont **list) {
 char menor[40];
 tpPont *i = *list, *j = NULL;
 while (i->prox != NULL) {
 strcpy(menor, i->nome);
 j = i->prox;
 while (j != NULL) {
 if (strcmp(j->nome, menor) < 0) {
 strcpy(menor, j->nome);
 strcpy(j->nome, i->nome);
 strcpy(i->nome, menor);
 }
 j = j->prox;
 }
 i = i->prox;
 }
 }
#ifdef	__cplusplus
}
#endif
#endif	/* TADLISTA_H */
main.cpp
/* 
 * File: main.cpp
 * Author: joao
 *
 * Created on 16 de Abril de 2016, 13:34
 */
#include <cstdlib>
#include"TADLista.h"
using namespace std;
/*
 * 
 */
int main(int argc, char** argv) {
 tpPont *lista = NULL;
 insere(&lista, "Joao");
 insere(&lista, "Amanda");
 insere(&lista, "Osmar");
 insere(&lista, "Andre");
 insere(&lista, "Luciana");
 //exclui(&lista,"Amanda");
 selecaoDireta(&lista);
 exibe(lista);
 return 0;
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando

Outros materiais