A Lista Dinâmica (insere e exclui inicio/fim e qualquer posição)
Por: luan_nardini • 3/10/2019 • Trabalho acadêmico • 410 Palavras (2 Páginas) • 169 Visualizações
#include <stdio.h>
#include <stdlib.h>
typedef struct ld{
int valor;
struct ld *prox;
}ld;
ld *inicio = NULL, *aux = NULL, *novo = NULL;
void novo_elemento(){
novo = malloc(sizeof(ld));//malloc aloca a memória de um tamanho(bytes) que caiba o (ld)
printf("Digite o valor");
scanf("%d",&novo->valor); //*novo.valor == novo->valor
novo->prox = NULL;
}
void insere_inicio(){
novo_elemento();
novo->prox = inicio;
inicio=novo;
}
void remove_inicio(){
if(inicio!=NULL){
aux=inicio;
inicio=inicio->prox;
free(aux);
}
}
void insere_fim(){
novo_elemento();
if(inicio == NULL){
inicio = novo;
}
else{
aux=inicio;
while(aux->prox !=NULL)
aux= aux->prox;
aux->prox = novo;
}
}
void remove_fim(){
ld *aux2 = inicio;
if(inicio==NULL){
printf("Lista vazia");
}
else{
aux=inicio;
while(aux->prox != NULL)
aux= aux->prox;
while(aux2->prox != aux)
aux2 = aux2->prox;
aux2->prox = NULL;
free(aux);
}
}
void insere_qq_pos(int pos){
int cont = 1;
ld *aux2 = inicio;
if(pos==1){
insere_inicio();
}
else{
novo_elemento();
while(cont < pos){
aux = aux->prox;
cont++;
}
while(aux2->prox != aux)
aux2 = aux2->prox;
...