Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa
Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa
La seconda generazione della citycar elettrica di Dacia passa alla piattaforma RGEV small di Renault Group, cresce di 15 cm in lunghezza e 18 cm in larghezza, adotta un motore da 80 CV e una batteria LFP da 27,5 kWh per 250 km WLTP. Prezzi da 17.900 euro, produzione a Novo Mesto in Slovenia.
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX ha portato sul mercato Picco, un e-reader da 3,97 pollici che pesa 58 grammi e si aggancia al retro dello smartphone con un anello magnetico. Lo abbiamo usato con Pixel 11 Pro XL e iPhone 18 Pro per capire se un formato così ridotto regga la prova della lettura quotidiana
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
A Las Vegas AMD ha svelato i dettagli architetturali delle CPU EPYC di sesta generazione, note con il nome in codice Venice. Nuovi core Zen 6 e Zen 6c costruiti a 2 nanometri, fino a 256 core per socket, 16 canali di memoria, interfaccia PCI Express 6.0 e un'intera famiglia di proposte che va da Venice SP7 a Verano. Senza dimenticare la memoria, oggi la voce di costo più pesante in un server: AMD risponde con CXL 3.1 e con la tecnologia software MEXT, che porta la memoria flash dentro la gerarchia della DRAM.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-07-2011, 11:40   #1
EnergyVortex
Member
 
Iscritto dal: Aug 2009
Messaggi: 287
[C] chiarimento sui doppi puntatori

Ciao a tutti, sto svolgendo un esercizio che mi chiede di creare una funzione ricorsiva che prese in input due liste di interi doppimanete puntate me le vada a modificare in vario modo. Ad esempio mi viene chiesto di togliere da L1 tutti i numeri multipli di 3 e di aggiungerli in testa ad L2.
Ho pensato che l'unico modo per risolvere il problema è usare dei doppi puntatori così da poter modificare entrambe le liste, ho,però, dei dubbi sulla sintassi che ho usato.
Vi posto il pezzo di codice che toglie L1 i multipli di 3 e li mette in testa ad L2.


Codice:
struct elemento  
{
    struct elemento *prev;
    struct elemento*next;
    int inf;
}

void controlla (struct elemento **L1,struct elemento **L2)
{
   if (*L1!=NULL)
   {
       if ((*L1)->inf%3)==0)
       {
          struct elemento *Temp;
          Temp=(struct elemento*)malloc(sizeof(struct elemento));
          Temp->inf=(*L1)->inf;
           Temp->prev=NULL;
          (*L2)->prev=Temp;
          Temp->next=*L2;
           *L2=Temp;
       }
   }
}
Vi sembra corretto il codice? Sono in dubbio sopratutto sulla parte in cui vado a mettere in testa il nuovo nodo....
EnergyVortex è offline   Rispondi citando il messaggio o parte di esso
Old 05-07-2011, 14:35   #2
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
ma se devi togliere da L1 e mettere in L2 a che ti serve allocare nuova memoria? poi va be', manca anche la chiamata ricorsiva nella funzione

comunque così com'è, aggiungendo la chiamata ricorsiva e rimuovendo dalla lista L1 l'elemento che hai messo in L2 dovrebbe funzionare, anche se fai un "giro" un po' strano
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 09-07-2011, 12:33   #3
EnergyVortex
Member
 
Iscritto dal: Aug 2009
Messaggi: 287
Quote:
Originariamente inviato da tuccio` Guarda i messaggi
ma se devi togliere da L1 e mettere in L2 a che ti serve allocare nuova memoria? poi va be', manca anche la chiamata ricorsiva nella funzione

comunque così com'è, aggiungendo la chiamata ricorsiva e rimuovendo dalla lista L1 l'elemento che hai messo in L2 dovrebbe funzionare, anche se fai un "giro" un po' strano
Puoi spiegarmi quale sarebbe il modo corretto di spostare i nodi?
EnergyVortex è offline   Rispondi citando il messaggio o parte di esso
Old 09-07-2011, 13:15   #4
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
Quote:
Originariamente inviato da EnergyVortex Guarda i messaggi
Puoi spiegarmi quale sarebbe il modo corretto di spostare i nodi?
be', puoi semplicemente spostarlo cambiando qualche puntatore, tipo:

Codice:
// tmp punta all'elemento da spostare in L2

struct elemento *tmp = *L1;

// Per eliminarlo da L1, colleghiamo direttamente il suo
// predecessore con il suo successore (che brutta parola :/)
// stando attenti a trattare i casi in cui tmp sia
// l'ultimo o il primo della lista

struct elemento *prev = tmp->prev;
struct elemento *next = tmp->next;

if (prev != NULL)
{
  prev->next = next;
}
else
{
  *L1 = next;
}

if (next != NULL)
{
  next->prev = prev;
}

// Fatto questo, inserisci tmp in L2

tmp->prev = NULL;
tmp->next = *L2;
*L2 = tmp;
non garantisco sia corretto :v
tuccio` è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa Nuova Dacia Spring, del modello precedente resta...
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone BOOX Picco: l'ebook reader minuscolo è un...
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria AMD EPYC Venice: dentro Zen 6, i SoC a 256 core ...
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro HONOR Pad X9 Max recensione, schermo ultra large...
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
NVIDIA cerca il successore di Jensen Hua...
La CNSA annuncia la missione Tianwen-4 v...
Una valanga di wafer e memorie incombe s...
Microsoft 365, miglioramenti dopo il dow...
Un'IA attacca la tua azienda, ma per dif...
TSMC investe 1 miliardo di dollari in Op...
Niente più risposte IA nelle ricerche: M...
Allarmi bomba nelle scuole, il Viminale:...
OpenAI incassa 10 miliardi in tre mesi, ...
Continua il Black Friday Engwe: sconto e...
OnePlus 12 riceve Android 17 con una set...
Troppe patch generate dall'IA: anche chi...
Comprata e spenta il giorno dopo: cos'er...
Google lancia Tabletop, l'IA che trasfor...
SpaceX e Tesla verso la fusione del seco...
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: 23:37.


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