Algorítmo de lista encadeada simples linguagem c
Algorítimo de Lista de encadeamento Simples Linguagem ultilizada : C
Ermesom Lourenco Ciências Da Computação Instituto de Informática Universidade Federal de Goiás
*/
#include
#include
typedef int elemento;
typedef struct no { elemento valor; struct no* proximo;
} No;
typedef struct lista{ No* inicio; No* fim; int quantidade;
} Lista;
void erro_lista_vazia(){ printf("Erro: Lista vazia!\n"); exit(1);
}
void erro_lista_posicao(){ printf("Erro: Posição inválida!\n"); exit(1);
}
void lista_inicializar(Lista* l){ l->inicio = NULL; l->fim = NULL; l->quantidade = 0;
}
int lista_quantidade(Lista l){
No* aux = l.inicio; int c = 0;
while (aux != NULL){ c++; aux = aux->proximo; }
return c;
}
void lista_inserir_inicio(Lista* l, elemento e){
No* aux = malloc(sizeof(No)); if (l->quantidade==0) { aux->valor = e; aux->proximo = l->inicio; l->inicio = aux; l->fim= aux; } else { aux->valor = e; aux->proximo = l->inicio; l->inicio = aux; } l->quantidade++;
}
elemento lista_remover_inicio(Lista* l){
if (l->inicio == NULL) erro_lista_vazia();
No* aux = l->inicio; l->inicio = aux->proximo; elemento e = aux->valor; free(aux); l->quantidade--; return e;
}
elemento lista_inicio(Lista l){
if (l.inicio == NULL) erro_lista_vazia();
No* aux = l.inicio;
return aux->valor;
}
void lista_inserir_fim(Lista* l, elemento e){
No* aux = malloc(sizeof(No)); aux->valor = e; aux->proximo = NULL;
if (l->quantidade == 0) { l->inicio = aux; l->fim = aux; }else { l->fim->proximo = aux; l->fim = aux; } l->quantidade++; }
elemento lista_remover_fim(Lista* l){
if (l->inicio == NULL) erro_lista_vazia();
No* aux = l->inicio;
if (aux->proximo == NULL){ l->inicio = NULL; l->fim=NULL; } else {
No* n = l->inicio; aux =