Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <locale.h>
- struct no {
- int valor;
- struct no *proximo;
- };
- //visualize linked list
- struct lista {
- struct no *inicio;
- struct no *fim;
- };
- void inserirInicio(struct lista *lista, int valor) {
- struct no *novoValor = malloc(sizeof(struct no));
- novoValor->valor = valor;
- novoValor->proximo = NULL;
- if (lista->inicio == NULL) {
- lista->inicio = novoValor;
- lista->fim = novoValor;
- } else {
- novoValor->proximo = lista->inicio;
- lista->inicio = novoValor;
- }
- }
- void inserirFinal(struct lista *lista, int valor) {
- struct no *novoNo = malloc(sizeof(struct no));
- novoNo->valor = valor;
- novoNo->proximo = NULL;
- if (lista->inicio == NULL) {
- lista->inicio = novoNo;
- lista->fim = novoNo;
- } else {
- lista->fim->proximo = novoNo;
- lista->fim = novoNo;
- }
- }
- void removerValor(struct lista *lista, int valor) {
- struct no *aux;
- struct no *auxAnterior = NULL;
- aux = lista->inicio;
- //Percorre até o final da lista ou até o achar o valor
- while (aux != NULL && aux->valor != valor) {
- auxAnterior = aux;
- aux = aux->proximo;
- }
- if (aux == NULL) { //Não achou
- printf("Não achou\n");
- } else {
- if (lista->inicio == lista->fim) {
- //Só tem um elemento
- lista->inicio = NULL;
- lista->fim = NULL;
- } else if (lista->inicio == aux) {
- //Remover o inicio da lista
- lista->inicio = lista->inicio->proximo;
- //lista->inicio = aux->proximo;
- } else if (lista->fim == aux) {
- //Remove o ultimo elemento da lista
- lista->fim = auxAnterior;
- lista->fim->proximo = NULL;
- } else {
- //Remover do meio da lista
- auxAnterior->proximo = aux->proximo;
- aux->proximo = NULL;
- }
- free(aux); //Apaga espaço da memoria
- }
- }
- void listar(struct lista *lista) {
- struct no*aux;
- aux = lista->inicio;
- while(aux != NULL) {
- printf("%d\n", aux->valor);
- aux = aux->proximo;
- }
- }
- int main() {
- setlocale(LC_ALL, "");
- struct lista *minhaLista = malloc(sizeof(struct lista));
- minhaLista->inicio = NULL;
- minhaLista->fim = NULL;
- inserirInicio(minhaLista, 10);
- inserirInicio(minhaLista, 5);
- inserirFinal(minhaLista, 18);
- inserirFinal(minhaLista, 9);
- inserirInicio(minhaLista, 8);
- inserirInicio(minhaLista, 54);
- inserirFinal(minhaLista, 1);
- inserirInicio(minhaLista, 32);
- inserirFinal(minhaLista, 22);
- removerValor(minhaLista, 5);
- removerValor(minhaLista, 32);
- removerValor(minhaLista, 22);
- removerValor(minhaLista, 100);
- listar(minhaLista);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement