

Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Implementação da biblioteca de lista simplesmente encadeada
Tipologia: Notas de estudo
1 / 3
Esta página não é visível na pré-visualização
Não perca as partes importantes!


Definição da Estrutura de Dados do tipo LISTA ENCADEADA #include<stdio.h> #include<alloc.h>
#define VAZIA printf("\n >> Lista esta vazia <<") #define SUCESSO printf("\n >> Operacao realizada com sucesso! <<")
// Definindo a estrutura de dados typedef struct stnolista { int dado; // campo de informacao struct stnolista prox; // campo do ponteiro para o proximo no }no; // Criando o tipo lista typedef no lista;
Criar lista /* Criando uma lista vazia */ void criar(lista *lst) { *lst = NULL; }
Verificar se a lista está vazia /* Verificar se a lista esta vazia */ int vazia(lista lst) { return (lst == NULL); }
Obter o tamanho de uma lista /* Obter o tamanho da lista */ int tamanho(lista lst) { lista aux = lst; int contador = 0; while( aux != NULL) { aux = aux->prox; contador++; } return(contador); }
Obter o i-ésimo elemento de uma lista /* Obter o valor do elemento de uma determinada posicao */ int elemento (lista lst, int posicao, int valor) { / dado ira receber o valor encontrado Retorna 0 se a posicao for invalida. Caso contrario, retorna 1 */ lista aux = lst; int contador = 1;
if (vazia(lst) || posicao < 1 ) return(0);
while( (aux!=NULL) && (contador < posicao) ) { aux = aux->prox; contador++; } if ( aux != NULL ) { *valor = aux->dado; return(1);
} else return 0; /* A posição eh maior que a qtde de elementos da lista */ }
Pesquisando um determinado elemento, retornando sua posição /* Obter a posicao do elemento, cujo valor eh fornecido */ int busca(lista lst, int valor) { if (!vazia(lst)) { lista aux = lst; int contador = 1; while (aux != NULL) { if (aux->dado == valor) return contador; aux = aux->prox; contador++; } } return(0); }
Inserção de um elemento em uma determinada posição /* inserir um elemento na lista, dada a sua posicao */ int inserir( lista lst, int posicao, int valor) { no novo; lista aux; int contador; // insercao se a lista estiver vazia if (vazia(lst)) { if (posicao != 1) return(0); if ( (novo = (no) malloc(sizeof(no))) == NULL ) return(0); novo->dado = valor; novo->prox = NULL; lst = novo; return(1); } // insercao na primeira posicao em uma lista nao vazia if ( posicao == 1) { if ( (novo = (no) malloc(sizeof(no))) == NULL ) return(0); novo->dado = valor; novo->prox = *lst; *lst = novo; return(1); } // insercao apos a primeira posicao em lista nao vazia aux = *lst; contador = 1; while ( (contador < posicao-1) && (aux != NULL)) { aux = aux->prox; contador++; } if ( aux == NULL ) return 0;
if ((novo = (no*) malloc(sizeof(no))) == NULL) return 0; novo->dado = valor; novo->prox = aux->prox; aux->prox = novo; return 1; }