View Single Post
Old 15-12-2009, 19:16   #9
The-Revenge
Senior Member
 
Iscritto dal: Feb 2007
Messaggi: 1352
Quote:
Originariamente inviato da BlackAuron Guarda i messaggi
Codice PHP:
#include<stdio.h>
#include<stdlib.h>

struct lis {
    
int inf;
    
struct lis *pun;
};

struct lis *genLista();
void stampaLista(struct lis *);
struct lis *cancNum(struct lis *);

int main() {
    
struct lis *puntalista;
    
puntalista genLista();
    
stampaLista(puntalista);
    
puntalista cancNum(puntalista);
    
stampaLista(puntalista);
    return (
0);
}

struct lis *genLista() {
    
struct lis *p, *paus;
    
int ni;
    
// Allochi lo spazio di struct lis e lo casti come puntatore ... le due
    // dimensioni sono differenti. Tra l'altro, il cast nel C non è necessario
    
malloc(sizeof (struct lis));
    
printf("\nInserisci numero elementi lista : ");
    
scanf("%d", &n);
    
printf("\nInserisci 1o elemento : ");
    
scanf("%d", &p->inf);
    
paus p;
    for (
2<= ni++) {
        
//stesso discorso di prima. Allochi patate e casti pere.
        
paus->pun malloc(sizeof (struct lis));
        
paus paus->pun;
        
printf("\nInserisci %do elemento: "i);
        
scanf("%d", &paus->inf);
    }
    
paus->pun NULL;
    return (
p);
}

void stampaLista(struct lis *p) {
    
printf("\nLA LISTA E' :\n");
    while (
p) {
        
printf("%d"p->inf);
        
printf("-->");
        
p->pun;
    }
    
printf("FINE LISTA");
    
printf("\n\n");
}

struct lis *cancNum(struct lis *p) {
    
struct lis *paus NULL,*tmp,*head NULL;
    while(
p){
        if(!(
p->inf 2)){
            
tmp p->pun;
            
free(p);
            
tmp;
        }
        else{
            if(!
head )
                
head p;
            else
                
paus->pun p;
            
paus p;
            
p->pun;
        }

    }
    if(
paus)
        
paus->pun NULL;
    return (
head);

Non è la soluzione ottima, ma funziona teoricamente si potrebbe fare a meno della variabile paus, e andare direttamente ad eliminare i successori di p.
si bhè ma il mio prof credo gli basti come l'ho fatto io, d'altronde non voglio diventare programmatore è solo un esame...mi diresti come fare il free giusto per il mio programma? grazie
__________________
Ho venduto a : truedocman2004,ragen-fio
Ho acquistato da :shinakuma, britt-one
The-Revenge è offline   Rispondi citando il messaggio o parte di esso