19/05/12 11:35
splittik
Salve a tutti, premetto che sono nabbo da far schifo e dunque sarei molto grato a chi deciderà di aiutarmi ed inotre vi chiedo di NON postare codice ma piuttosto darmi delle indicazioni sui vari punti.
Per iniziare vorrei implementare min senza usare i metodi head e removes in quanto l'ho gia fatto ma il mio intento è rifarlo usando solo i puntatori.
In min credo di aver creato un puntatore al primo elemento della lista (che resterà fermo) e nel ciclo creo un nuovo puntatore al "nodo" successivo che mi servirà per fare i confronti.
In base ai confronti dell'if aggiorno il minimo e ritorno la parte intera del puntatore...ma quando stampo il valore mi scrive l'ultimo elemento che ho inserito.
Questo è il mio primo dubbio ringrazio anticipatamente chiunque voglia aiutarmi CIAO CIAO
Il testo è questo:
Modificare la libreria di gestione delle liste come segue:
1 aggiungere puntatore prev
2 scrivere funzioni min e max
3 scrivere funzione deletekey
Per iniziare vorrei implementare min senza usare i metodi head e removes in quanto l'ho gia fatto ma il mio intento è rifarlo usando solo i puntatori.
In min credo di aver creato un puntatore al primo elemento della lista (che resterà fermo) e nel ciclo creo un nuovo puntatore al "nodo" successivo che mi servirà per fare i confronti.
In base ai confronti dell'if aggiorno il minimo e ritorno la parte intera del puntatore...ma quando stampo il valore mi scrive l'ultimo elemento che ho inserito.
Questo è il mio primo dubbio ringrazio anticipatamente chiunque voglia aiutarmi CIAO CIAO
Il testo è questo:
Modificare la libreria di gestione delle liste come segue:
1 aggiungere puntatore prev
2 scrivere funzioni min e max
3 scrivere funzione deletekey
//file liste.h typedef struct elem { int key; struct elem *next; struct elem *prev; } elemen_t; typedef elemen_t* lista_t; int is_empty(lista_t lista); int length(lista_t lista); lista_t insert(lista_t lista, int key); int head(lista_t lista); void removes(lista_t *plista); int max(lista_t lista); int min(lista_t lista); void delete_key(lista_t *lista, int key);
#include <stdio.h> #include <stdlib.h> #include "liste.h" int is_empty(lista_t lista) { return(lista == NULL); } int length(lista_t lista) { int n = 0; while(lista != NULL) { n++; lista = lista->next; } return n; } lista_t insert(lista_t lista, int key) { elemen_t *paux; paux = (elemen_t *)malloc(sizeof(elemen_t)); paux->key = key; paux->next = lista; return paux; } int head(lista_t lista) { if(lista != NULL) { return lista->key; } return 0; } void removes(lista_t *plista) { elemen_t *paux; if(*plista != NULL) { paux = *plista; *plista = (*plista)->next; free(paux); } } int min(lista_t lista){ elemen_t *nodo=lista; int num=nodo->key; elemen_t *prox=lista; int numn=prox->key; do{ prox++; if(num>numn){ num=numn; prox++; } else{ break; } }while(lista != NULL); return nodo->key; } void delete_key(lista_t *plista, int key){ //da implementare }
include <stdio.h> #include <stdlib.h> #include "liste.h" void main(){ int num; int i; int n; int testa; lista_t elm; lista_t elm1; lista_t elm2; elm=(struct elem*)malloc(sizeof(struct elem)); elm1=(struct elem*)malloc(sizeof(struct elem)); elm2=(struct elem*)malloc(sizeof(struct elem)); printf("insesisci dimensione lista: "); scanf("%d", &num); for(i=0; i<num; i++){ printf("insesisci num intero: "); scanf("%d", &n); elm =insert(elm, n); elm1 =insert(elm1, n); elm2 =insert(elm2, n); } int minimo=min(elm); printf("minimo %d\n", minimo); //int massimo=max(elm1); //printf("massimo %d\n", massimo); //delete_key(&elm2 , 5); free(elm); free(elm1); free(elm2);
aaa