Ho un imminente esame (data fissata per il 5 Settembre a meno di cambiamenti) e dato che per me è solo un'integrazione, devo esercitarmi sulle liste!
Per questo posto un pò di codice che sto facendo da qualche settimana giusto per riprendere confidenza con il Linguaggio C...
Accetto ovviamente qualsiasi consiglio per migliorare l'implementazione del mio codice che risulta anccora grezzo e basilare ...
Posto per ora la creazione di una lista con stampa e la ricerca di un elemento (anche nel caso l'elemento non sia presente)...
Grazie
PS: per semplificare la lettura ho diviso la funzione della ricerca in un code differente...
#include <stdio.h>
#include <stdlib.h>
struct nodo {
int info;
struct nodo *next;
};
struct nodo *crea_lista();
void stampa(struct nodo *l);
struct nodo *ricerca(struct nodo *l, int val);
int main() {
struct nodo *lista = NULL;
int elem;
lista = crea_lista();
stampa(lista);
printf("\n");
printf("\n Inserisci il valore da ricercare --> ");
scanf("%d", &elem);
printf("\n Valore trovato --> %d", ricerca(lista, elem)->info);
printf("\n\n");
system("PAUSE");
return 0;
}
struct nodo *crea_lista() {
int n, i;
struct nodo *p, *pNext;
printf("\n Digita il numero di elementi della lista --> ");
scanf("%d", &n);
if(n != 0) {
p = malloc(sizeof(struct nodo));
printf("\n Inserisci il valore [1] --> ");
scanf("%d", &p->info);
pNext = p;
for(i = 2; i <= n; i++) {
pNext->next = malloc(sizeof(struct nodo *));
pNext = pNext->next;
printf("\n Inserisci il valore [%d] --> ", i);
scanf("%d", &pNext->info);
}
pNext->next = NULL;
}
else {
p = NULL;
printf("\n LISTA VUOTA \n");
}
return p;
}
void stampa(struct nodo *l) {
printf("\n La Lista --> ");
while(l != NULL) {
printf(" |%d| ", l->info);
l = l->next;
}
printf("NULL");
}
Questa è la porzione di codice per la ricerca di un elemento!
struct nodo *ricerca(struct nodo *l, int val) {
int count = 0;
while(l != NULL) {
if (l->info == val) {
count ++;
}
l = l->next;
}
if(count != 0) {
printf("\n Il valore inserito [%d] e' stato trovato!", val);
}
else {
printf("\n Il valore non e' presente nella lista!");
}
printf("\n Valore trovato %d volte", count);
return l;
}