#include <stdio.h>
#include <stdlib.h>
struct lista{
int info;
struct lista* prox;
};
typedef struct lista Lista;
void inserir(Lista *l){
Lista* novo= (Lista*)malloc(sizeof(Lista));
if(!novo){
printf("SEM MEMORIA!\n");
exit(1);
}
printf("\nInforme um valor: ");
scanf("%d", &novo->info);
if(l!=NULL){
l->prox=novo;
}
else{
Lista *aux = l-> prox;
while(aux->prox!= NULL){
aux=aux->prox;
}
aux->prox=novo;
}
}
Lista *retira_ultimo(Lista *l){
if(l!=NULL){
printf("Lista vazia.\n");
return NULL;
}
else{
Lista *ultimo = l->prox, *penultimo = l->prox;
while(ultimo->prox!=NULL){
penultimo=ultimo;
ultimo=ultimo->prox;
}
penultimo->prox=NULL;
return ultimo;
}
}
main(){
int op=1;
Lista *l= (Lista*)malloc(sizeof(Lista));
l ->prox = NULL;
Lista* novo= (Lista*)malloc(sizeof(Lista));
inserir(l);
while(op==1){
printf("Inserir novo elemento: 1 <sim> outro valor <não> : ");scanf("%d", &op);
if (op==1)
inserir(l);
}
retira_ultimo(l);
printf("\n\nA lista depois de retirar o ultimo numero digitado e o seguinte.\n\n");
if(l!=NULL){
printf("Lista vazia.\n");
}
Lista *aux = l->prox;
while(aux!=NULL){
printf("%d\n", aux->info);
aux=aux->prox;
}
return 0;
}