Torna indietro   Hardware Upgrade Forum > Software > Programmazione

NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
Nelle ultime settimane abbiamo provato tre delle proposte top di gamma di NZXT nelle categorie case, dissipatori e ventole. Rispettivamente, parliamo dell'H9 Flow RGB+, Kraken Elite 420 e F140X. Si tratta, chiaramente, di prodotti di fascia alta che si rivolgono agli utenti DIY che desiderano il massimo per la propria build. Tuttavia, mentre i primi due dispositivi mantengono questa direzione, le ventole purtroppo hanno mostrato qualche tallone d'Achille di troppo
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN è il primo monitor gaming con pannello QD-OLED Gen 5 a layout RGB Stripe Pixel e 360 Hz su 34 pollici: lo abbiamo misurato con sonde colorimetriche e NVIDIA LDAT. Ecco tutti i dati
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Nothing Phone (4a) Pro cambia pelle: l'alluminio unibody sostituisce la trasparenza integrale, portando una solidità inedita. Sotto il cofano troviamo uno Snapdragon 7 Gen 4 che spinge forte, mentre il display è quasi da top dig amma. Con un teleobiettivo 3.5x e la Glyph Matrix evoluta, è la prova di maturità di Carl Pei. C'è qualche compromesso, ma a 499EUR la sostanza hardware e la sua unicità lo rendono un buon "flagship killer" in salsa 2026
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-05-2009, 10:04   #1
ivan p
Member
 
Iscritto dal: Jun 2008
Messaggi: 58
[Linguaggio C] Aiuto interpretazione lista

Salve, studio ingegneria informatica e ho qualche problema ad interpretare il codice di un esempio di lista del mio prof; Utilizzo il devc++. Sarò grato a tutti coloro che potranno aiutarmi.

Quello che non capisco è il funzionamento della funzione Full quando viene richiamata nel Main.

#include <stdio.h>
#include <malloc.h>
#define LISTAVUOTA NULL

typedef int tipobase;

typedef short boolean;

typedef struct nodo {
tipobase info;
struct nodo *next;
} *list;

typedef list position;

position End(list l)
{
if (l==LISTAVUOTA) return(LISTAVUOTA);
while (l->next!=LISTAVUOTA)
l=l->next;
return(l);
}

position First(list l)
{
return(LISTAVUOTA); /*se la lista è vuota torna END(l) */
}

void MakeNull(list *l)
{
*l=LISTAVUOTA;
}

boolean Empty(list l)
{
return(l==LISTAVUOTA);
}

boolean Full(list l)
{
return(0);
}

void Insert(list *l, position p, tipobase x)
{
struct nodo * temp;

temp=(struct nodo *) malloc(sizeof(struct nodo));
temp->info=x;
if (p==LISTAVUOTA) {
temp->next=*l;
*l=temp;
} else {
temp->next=p->next;
p->next=temp;
}
}

void Delete(list *l, position p)
{
struct nodo * tmp;

if (!Empty(*l) && p!=End(*l)) {
if (p==LISTAVUOTA) {
tmp=(*l)->next;
free (*l);
*l=tmp;
} else {
tmp=p->next;
p->next=tmp->next;
free (tmp);
}
}
}

position Locate(list l, tipobase x)
{

if (!Empty(l)) {
if (l->info==x) return(LISTAVUOTA);
while (l->next!=LISTAVUOTA) {
if (l->next->info==x) return(l);
l=l->next;
}
return(l);
}
}

tipobase Retrieve(list l, position p)
{
if (!Empty(l) && p!=End(l)) {
if (p==LISTAVUOTA) return(l->info);
else return(p->next->info);
}
}

position Next(list l, position p)
{
if (p!=End(l)) {
if (p==LISTAVUOTA) return(l);
else return(p->next);
}
}

void visita(list l)
{
position p,u;
tipobase x;
int i=0;

p=First(l);
u=End(l);
while (p!=u) {
x=Retrieve(l,p);
printf("L'elemento di posizione %d e' %d \n",++i,x);
p=Next(l,p);
}
}

void insord(list *l, tipobase x)
{
position p,u;
tipobase tmp;

if (Empty(*l)) Insert(l,First(*l),x);
else {
p=First(*l);
u=End(*l);
while (p!=u) {
tmp=Retrieve(*l,p);
if (tmp<x)
p=Next(*l,p);
else break;
}
Insert(l,p,x);
}
}

main()
{
list lt; //Variabile locale Lista
int s;
tipobase elem;
position pos;

MakeNull(&lt);

do {
printf("Menu di Operazioni \n");
printf("1-Inserimento Ordinato \n");
printf("2-Ricerca \n");
printf("3-Cancellazione \n");
printf("4-Visita Lista \n");
printf("5-Fine \n");
printf("Inserisci la scelta ---> ");
scanf("%d",&s);
fflush(stdin);
switch(s) {

case 1 : {
if (Full(lt)) printf("Lista piena \n");
else {
printf("Inserisci l'Elemento da Inserire ");
scanf("%d",&elem);
fflush(stdin);
insord(&lt,elem);
}
break;
}
case 2 : {
if (Empty(lt)) printf("Lista Vuota \n");
else {
printf("Inserisci l'Elemento da Ricercare \n");
scanf("%d",&elem);
fflush(stdin);
pos=Locate(lt,elem);
if (pos!=End(lt))
printf("Elemento Trovato \n");
else printf("Elemento non Trovato \n");
}
break;
}
case 3 : {
if (Empty(lt)) printf("Lista Vuota \n");
else {
printf("Inserisci l'Elemento da Cancellare \n");
scanf("%d",&elem);
fflush(stdin);
pos=Locate(lt,elem);
if (pos!=End(lt)) {
Delete(&lt,pos);
printf("Elemento Cancellato \n");
}
else printf("Elemento non Trovato \n");
}
break;
}
case 4 : {
if (Empty(lt)) printf("Lista Vuota \n");
else visita(lt);
break;
}
}
} while (s<5);
}
ivan p è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2009, 10:08   #2
ivan p
Member
 
Iscritto dal: Jun 2008
Messaggi: 58
Scusate mi sono accorto che incollando il codice la formattazione del testo è andata a farsi benedire, spero possiate aiutarmi comunque.

Ultima modifica di ivan p : 30-05-2009 alle 10:28.
ivan p è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2009, 12:14   #3
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da ivan p Guarda i messaggi
Salve, studio ingegneria informatica e ho qualche problema ad interpretare il codice di un esempio di lista del mio prof; Utilizzo il devc++. Sarò grato a tutti coloro che potranno aiutarmi.

Quello che non capisco è il funzionamento della funzione Full quando viene richiamata nel Main.
Codice:
#include <stdio.h> 
#include <malloc.h> 
#define LISTAVUOTA NULL 

typedef int tipobase; 

typedef short boolean; 

typedef struct nodo { 
     tipobase info; 
     struct nodo *next; 
} *list; 

typedef list position; 

position End(list l) 
{ 
 if (l==LISTAVUOTA) return(LISTAVUOTA); 
 while (l->next!=LISTAVUOTA) 
               l=l->next; 
 return(l); 
} 

position First(list l) 
{ 
  return(LISTAVUOTA); /*se la lista è vuota torna END(l) */ 
} 

void MakeNull(list *l) 
{ 
  *l=LISTAVUOTA; 
} 

boolean Empty(list l) 
{ 
 return(l==LISTAVUOTA); 
} 

boolean Full(list l) 
{ 
 return(0); 
} 

void Insert(list *l, position p, tipobase x) 
{ 
  struct nodo * temp; 

  temp=(struct nodo *) malloc(sizeof(struct nodo)); 
   temp->info=x; 
    if (p==LISTAVUOTA) { 
      temp->next=*l; 
     *l=temp; 
    } else { 
           temp->next=p->next; 
           p->next=temp; 
    } 
 } 

void Delete(list *l, position p) 
 { 
    struct nodo * tmp; 

    if (!Empty(*l) && p!=End(*l)) { 
           if (p==LISTAVUOTA) { 
                     tmp=(*l)->next; 
                     free (*l); 
                     *l=tmp; 
           } else { 
                     tmp=p->next; 
                     p->next=tmp->next; 
                     free (tmp); 
           } 
    } 
 } 

position Locate(list l, tipobase x) 
 { 

 if (!Empty(l)) { 
           if (l->info==x) return(LISTAVUOTA); 
           while (l->next!=LISTAVUOTA) { 
                     if (l->next->info==x) return(l); 
                     l=l->next; 
           } 
           return(l); 
 } 
 } 

tipobase Retrieve(list l, position p) 
 { 
    if (!Empty(l) && p!=End(l)) { 
           if (p==LISTAVUOTA) return(l->info); 
           else return(p->next->info); 
    } 
 } 

position Next(list l, position p) 
 { 
 if (p!=End(l)) { 
     if (p==LISTAVUOTA) return(l); 
     else return(p->next); 
  } 
 } 

void visita(list l) 
{ 
 position p,u; 
  tipobase x; 
 int i=0; 

 p=First(l); 
 u=End(l); 
 while (p!=u) { 
    x=Retrieve(l,p); 
   printf("L'elemento di posizione %d e' %d \n",++i,x); 
   p=Next(l,p); 
 } 
} 

void insord(list *l, tipobase x) 
{ 
   position p,u; 
   tipobase tmp; 

   if (Empty(*l)) Insert(l,First(*l),x); 
   else { 
          p=First(*l); 
          u=End(*l); 
          while (p!=u) { 
                  tmp=Retrieve(*l,p); 
                   if (tmp<x) 
                                  p=Next(*l,p); 
                   else break; 
          } 
          Insert(l,p,x); 
   } 
} 

main() 
{ 
    list lt;  //Variabile locale Lista 
    int s; 
    tipobase elem; 
   position pos; 

   MakeNull(&lt); 

    do { 
         printf("Menu di Operazioni \n"); 
         printf("1-Inserimento Ordinato \n"); 
         printf("2-Ricerca \n"); 
         printf("3-Cancellazione \n"); 
         printf("4-Visita Lista \n"); 
         printf("5-Fine \n"); 
         printf("Inserisci la scelta ---> "); 
         scanf("%d",&s); 
         fflush(stdin); 
         switch(s) { 

         case 1 : { 
                 if (Full(lt)) printf("Lista piena \n"); 
                 else { 
                     printf("Inserisci l'Elemento da Inserire "); 
                     scanf("%d",&elem); 
                     fflush(stdin); 
                     insord(&lt,elem); 
              } 
              break; 
       } 
       case 2 : { 
              if (Empty(lt)) printf("Lista Vuota \n"); 
              else { 
                     printf("Inserisci l'Elemento da Ricercare \n"); 
                     scanf("%d",&elem); 
                     fflush(stdin); 
                     pos=Locate(lt,elem); 
                     if (pos!=End(lt)) 
                            printf("Elemento Trovato \n"); 
                     else printf("Elemento non Trovato \n"); 
              } 
              break; 
       } 
       case 3 : { 
              if (Empty(lt)) printf("Lista Vuota \n"); 
              else { 
                     printf("Inserisci l'Elemento da Cancellare \n"); 
                     scanf("%d",&elem); 
                     fflush(stdin); 
                     pos=Locate(lt,elem); 
                     if (pos!=End(lt)) { 
                            Delete(&lt,pos); 
                            printf("Elemento Cancellato \n"); 
                     } 
                     else printf("Elemento non Trovato \n"); 
              } 
              break; 
       } 
       case 4 : { 
              if (Empty(lt)) printf("Lista Vuota \n"); 
              else visita(lt); 
              break; 
       } 
       } 
   } while (s<5); 
}
usa il tag code la prossima volta
secondo me c'è qualcosa di sbagliato, li passa un argomento e non lo usa. inoltre non può ritornare sempre zero altrimenti quell'if-else è inutile.

Ultima modifica di ndakota : 30-05-2009 alle 12:19.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2009, 12:53   #4
ivan p
Member
 
Iscritto dal: Jun 2008
Messaggi: 58
Quale argomento non usa? Per quello che ho capito quando il main esamina la condizione la funzione restituisce sempre che la lista non è mai piena e questo non sarebbe corretto perchè può riempirsi. Giusto?
ivan p è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2009, 12:56   #5
||ElChE||88
Senior Member
 
Iscritto dal: Dec 2003
Messaggi: 4907
Se la dimensione della lista non è limitata come fa a diventare piena?
||ElChE||88 è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2009, 13:02   #6
ivan p
Member
 
Iscritto dal: Jun 2008
Messaggi: 58
Giusto.
ivan p è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2009, 13:03   #7
ivan p
Member
 
Iscritto dal: Jun 2008
Messaggi: 58
Altro dubbio, perchè Firtst restituisce sempre NULL? Perchè anche Empty restituisce NULL?

Ultima modifica di ivan p : 30-05-2009 alle 13:15.
ivan p è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2009, 14:02   #8
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2789
Perché ritorna LISTAVUOTA che hai definito all'inizio come NULL.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2009, 15:40   #9
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da ivan p Guarda i messaggi
Quale argomento non usa? Per quello che ho capito quando il main esamina la condizione la funzione restituisce sempre che la lista non è mai piena e questo non sarebbe corretto perchè può riempirsi. Giusto?
quello della funzione Full()
ndakota è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico Recensione Nothing Phone (4a) Pro: finalmente in...
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
La navicella spaziale indiana Gaganyaan ...
Le macchie sullo scudo termico di Orion ...
Anthropic ha un'AI che trova falle in Wi...
I 10 migliori sconti Amazon del weekend:...
Con un coupon scendono ancora: le super ...
Minimo storico per Samsung Galaxy S26 Ul...
Si è conclusa la missione lunare ...
EK Waterblock si arrende agli aumenti, i...
Geekbench si aggiorna: tutti i test con ...
Per la prima volta un computer quantisti...
Telecamere Reolink 4K su Amazon: Wi-Fi 6...
Anthropic vuole farsi i chip da sola? Co...
Il fondatore di Framework: il personal c...
JBL Live Flex 3 a 129€ su Amazon: ANC ad...
Come un uomo ha costruito un'azienda da ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:47.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v