Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- //attenzione la funzione che cancella i pari, funziona in buona
- //parte dei casi, tranne in quelli dove gli elementi da cancellare sono
- //consecutivi
- struct elemento {
- int num;
- struct elemento *next;
- };
- //funzione uno crea lista con una seq di interi in input
- struct elemento *creaListaSeq(){
- int numero;
- struct elemento *primo=NULL;
- struct elemento *puntatore;
- printf("Inserisci il primo numero:\n");
- scanf("%d",&numero);
- //se ha inserito zero termina subito
- if(numero==0)
- return primo;
- if(numero!=0){
- primo=malloc(sizeof(struct elemento));
- primo->num=numero;
- }
- puntatore=primo;
- //ora faccio gli altri elementi
- //lettura del prosssimo numero
- printf("Inserisci il numero:\n");
- scanf("%d",&numero);
- while(numero!=0){
- puntatore->next=malloc(sizeof(struct elemento));
- puntatore=puntatore->next;
- puntatore->num=numero;
- printf("Inserisci il numero:\n");
- scanf("%d",&numero);
- }
- puntatore->next=NULL;
- return primo;
- }
- //elimina pari
- void cancella2(struct elemento *lista){
- struct elemento *prev;
- prev=NULL;
- //controllo primo elemento
- //questo pezzo mi elimina il primo elemento se
- //necessario
- struct elemento *punt;
- punt=lista;
- if(lista->num%2==0){
- if(punt->next==NULL)
- lista=NULL;
- else
- lista=punt->next;
- free(punt);
- }
- //------------------------------
- while(lista){
- if(lista->num%2==0){
- prev->next=lista->next;
- free(lista);
- lista=prev->next;
- }
- else{
- prev=lista;
- lista=lista->next;
- }
- }
- }
- //main
- int main(){
- struct elemento *lista;
- lista=creaListaSeq();
- cancella2(lista);
- while(lista!=NULL){
- printf("%d-->", lista->num);
- lista=lista->next;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment