File: /home/cesar/Desktop/data/UFAM…DI/coding/lista/listasimples.c

Transcrição

File: /home/cesar/Desktop/data/UFAM…DI/coding/lista/listasimples.c
File: /home/cesar/Desktop/data/UFAM…DI/coding/lista/listasimples.c
#include <stdio.h>
#include <stdlib.h>
typedef struct elementar TElementar;
struct elementar{
int info;
TElementar* prox;
};
TElementar *criaLista(){
return (NULL);
}
TElementar *removerLista(TElementar *inicio){
TElementar *aux;
if (inicio != NULL){
aux = inicio;
inicio = inicio->prox;
free(aux);
}
return inicio;
}
TElementar *removerFinalLista(TElementar *inicio){
TElementar *caminha, *anterior;
if (inicio == NULL)
return inicio;
else if(inicio->prox == NULL){
caminha = inicio;
inicio = inicio->prox;
free(caminha);
}else{
caminha = inicio;
//anterior = NULL;
while(caminha->prox->prox != NULL){
//anterior = caminha;
caminha = caminha->prox;
}
free(caminha->prox);
caminha->prox = NULL;
//free(aux);
//anterior->prox = NULL;
//free(caminha);
}
return inicio;
}
TElementar *inserirLista(TElementar *inicio, int info){
TElementar *novo;
novo = (TElementar *)malloc(sizeof(TElementar));
novo->info = info;
novo->prox = inicio;
return novo;
}
Page 1 of 3
File: /home/cesar/Desktop/data/UFAM…DI/coding/lista/listasimples.c
TElementar *inserirFinalLista(TElementar *inicio, int num){
TElementar *novo, *caminha;
novo = (TElementar *) malloc(sizeof(TElementar));
novo->info = num;
novo->prox = NULL;
if(inicio == NULL)
inicio = novo;
else{
caminha=inicio;
while(caminha->prox != NULL){
caminha = caminha->prox;
}
caminha->prox = novo;
}
return inicio;
}
TElementar* procurarLista(TElementar *inicio, int nro){
TElementar* caminha;
caminha = inicio;
while(caminha!=NULL){
if(caminha->info == nro)
break;
else
caminha = caminha->prox;
}
return caminha;
}
void imprimirLista(TElementar *inicio){
TElementar *caminha;
caminha = inicio;
printf("\n");
while(caminha!=NULL){
printf("%d ", caminha->info);
caminha = caminha->prox;
}
printf("\n");
}
void imprimirRecursivaLista(TElementar *caminha){
if (caminha != NULL){
imprimirRecursivaLista(caminha->prox);
printf("%d ", caminha->info);
}
}
int main(){
TElementar *p;
p = criaLista();
p = inserirFinalLista(p, 10);
p = inserirFinalLista(p, 15);
p = inserirFinalLista(p, 2);
Page 2 of 3
File: /home/cesar/Desktop/data/UFAM…DI/coding/lista/listasimples.c
imprimirLista(p);
p = removerLista(p);
imprimirLista(p);
p = removerFinalLista(p);
imprimirLista(p);
//
}
imprimirRecursivaLista(p);
Page 3 of 3