Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
La nuova fotocamera compatta DJI spicca per l'abbinamento ideale tra le dimensioni ridotte e la qualità d'immagine. Può essere installata in punti di ripresa difficilmente utilizzabili con le tipiche action camera, grazie ad una struttura modulare con modulo ripresa e base con schermo che possono essere scollegati tra di loro. Un prodotto ideale per chi fa riprese sportive, da avere sempre tra le mani
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-05-2006, 01:16   #1
ilgrigio
Member
 
Iscritto dal: Apr 2006
Messaggi: 36
[c] - linked list

Ciao a tutti!
ho un esercizio da risolvere che proprio nn ho capito, premetto che sono alle prime armi con le linked lists .
ecco il testo :
Gestione camere d'albergo - simulare in C la linked list tramite due array statici : il primo contenente le informazioni (può essere anche un array di struct), il secondo array contenente i link(puntatori ai nodi della lista).
E' necessario creare prima una "lista libera" inizializzando l'array dei link in modo che ogni componente punti alla componente successiva. La "lista libera" corrisponde alla memoria in cui allocare la lista delle informazioni : infatti i nodi da inserire nella linked list delle informazioni sono prelevati dalla lista libera, mentre i nodi da eliminare dalla lista delle informazioni vanno restituiti alla lista libera.

--------------------------------

Non ho capito bene il testo e ho difficoltà a capire come impostare l'algoritmo. Che pensate? Secondo voi devo far uso solo di array statici o usare :

struct linked_list {
DATA d;
struct linked_list *next;
};

typedef struct linked_list ELEMENT;
typedef ELEMENT *LINK;
ilgrigio è offline   Rispondi citando il messaggio o parte di esso
Old 04-05-2006, 01:25   #2
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
Quote:
simulare in C la linked list tramite due array statici

se dici che devi simulare una lista con array statici vuole dire che quella struttura che dici tu(che è una lista) non va bene...
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 03-09-2008, 18:48   #3
Prince_81
Senior Member
 
L'Avatar di Prince_81
 
Iscritto dal: May 2008
Messaggi: 412
Anche io sto affrontando lo stesso esercizio e non ho ancora capito bene se qualcuno vuol riaprire l'argomento ne sarò lieto.

Anche se è stato aperto nel 2006
Prince_81 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 11:03   #4
Prince_81
Senior Member
 
L'Avatar di Prince_81
 
Iscritto dal: May 2008
Messaggi: 412
La struttura creata da ilgrigio non va bene perchè utilizza i puntatori io dovrei invece creare una lista con array statici come dici l'esercizio, qualcuno di voi saprebbe guidarmi sulla creazione della struttura?

Per esempio

Codice:
struct nodo{int nome[30];int pnext;}persona[100];
Prince_81 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 11:38   #5
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
Quote:
Originariamente inviato da Prince_81 Guarda i messaggi
La struttura creata da ilgrigio non va bene perchè utilizza i puntatori io dovrei invece creare una lista con array statici come dici l'esercizio, qualcuno di voi saprebbe guidarmi sulla creazione della struttura?

Per esempio

Codice:
struct nodo{int nome[30];int pnext;}persona[100];
Prince_81: che vuoi fare? spiegati meglio.
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 12:26   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Una lista con array statici la puoi simulare tranquillamente.
Crei un array di struct.
La struttura dati sarà di questo tipo:
Codice:
struct nodo
{
   xxxx info;
   int next;
   int free;
};
free ha valore 0 o 1 a seconda se l'elemento è libero o meno. next contiene l'indice dell'array contenente l'elemento successivo della lista, -1 se è l'elemento in coda alla lista. Ovviamente bisogna mantenere l'indice a quello che sarà l'elemento in testa alla lista.

Questo se non si utilizzano i puntatori. Volendo si potrebbero comunque utilizzare i puntatori facendo in modo che next punti direttamente all'indirizzo del prossimo elemento all'interno del vettore.
Inoltre volendo si può ottimizzare l'inserimento (nel caso sopra la ricerca della posizione in cui inserire un nuovo elemento è O(n) perché bisogna ricercare il primo elemento libero) mantenendo un altro vettore, come coda circolare o come stack (forse meglio il secondo per il principio di località), in cui inserire tutti gli indici che contengono gli elementi liberi nell'altro vettore (ovviamente free non serve più).
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 16:42   #7
Prince_81
Senior Member
 
L'Avatar di Prince_81
 
Iscritto dal: May 2008
Messaggi: 412
cionci sei stato molto chiaro ma non ho capito una cosa l'array lista_libera lo devo creare? perchè l'esercizio lo consiglia ma non so se è obbligatorio. se si iniziano da 1 gli elementi?
Prince_81 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 16:47   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Puoi utilizzarlo o meno, se non lo utilizzi devi immettere un flag "free" nella struttura dati che indica se quell'elemento è libero o meno. Se lo utilizzi però fallo sotto forma di stack, perché viene proprio carino

Ultima modifica di cionci : 19-09-2008 alle 16:49.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2008, 09:35   #9
Prince_81
Senior Member
 
L'Avatar di Prince_81
 
Iscritto dal: May 2008
Messaggi: 412
se decido si usare l'array listalibera devo inserirlo nella struct cioè

Codice:
struct nodo {char nome[20];int next;
                             int listalibera[9];};
oppure sarebbe meglio come un array esterno alla struct ? secondo me la seconda soluzione è la migliore.
Prince_81 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2008, 10:11   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ovviamente come array esterno
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2008, 10:42   #11
Prince_81
Senior Member
 
L'Avatar di Prince_81
 
Iscritto dal: May 2008
Messaggi: 412
Da come ho capito l'ultimo elemento di questo array cioè listalibera deve essere -1 per segnalare la fine dei posti vuoti è vero?

Scusami per le troppe domande è solo che questo esercizio mi sta facendo impazzire
Prince_81 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2008, 10:48   #12
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
Quote:
Originariamente inviato da Prince_81 Guarda i messaggi
Da come ho capito l'ultimo elemento di questo array cioè listalibera deve essere -1 per segnalare la fine dei posti vuoti è vero?

Scusami per le troppe domande è solo che questo esercizio mi sta facendo impazzire
scusate l'intromissione!

Cmq da quel che ho capito, no non deve essere -1.

L'ultimo elemento di listalibera deve puntare all'ultimo elemento della lista e basta! Poi è un array....lo sai che quello è l'ultimo!
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2008, 10:51   #13
Prince_81
Senior Member
 
L'Avatar di Prince_81
 
Iscritto dal: May 2008
Messaggi: 412
listalibera quindi parte da 0 o da 1 ?
Prince_81 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2008, 10:53   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
No non deve essere così, dovresti semplicemente mettere 0 nei posti vuoti e 1 nei posti occupati. Scorrertelo fino a trovare un posto libero (a 0) per fare un inserimento, poi al momento dell'eliminazione di un nodo basta inserire zero nel indice corrispondente.
Secondo faresti meglio a gestirlo come stack, è molto più semplice: all'inizio il vettore devi riempirlo con tutti gli indici (sono tutti liberi). Al momento dell'inserimento recuperi l'indice di un elemento libero dalla testa dello stack, al momento dell'eliminazione reinserisci l'indice dell'elemento nuovamente libero nello stack.

Ultima modifica di cionci : 20-09-2008 alle 11:01.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2008, 10:54   #15
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Oceans11 Guarda i messaggi
L'ultimo elemento di listalibera deve puntare all'ultimo elemento della lista e basta! Poi è un array....lo sai che quello è l'ultimo!
Perché questa cosa ? Secondo me deve solamente indicare che un nodo è presente/assente.

Ultima modifica di cionci : 20-09-2008 alle 11:01.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2008, 11:03   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Prince_81: però mi sorge un dubbio: come ti è stato chiesto di implementare questa lista ? Perché l'esercizio dice una cosa diversa da quella che dico io. Quella diciamo è un'implementazione un po' particolare.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2008, 11:15   #17
Prince_81
Senior Member
 
L'Avatar di Prince_81
 
Iscritto dal: May 2008
Messaggi: 412
Codice HTML:
Siimullare in C una linked lliistt ttramiitte due array sttattiicii:: iill priimo
conttenentte lle iinformaziionii (può essere anche un array dii
sttructt),, iill secondo array conttenentte ii lliink (punttattorii aii nodii
delllla lliistta)..
[È necessario creare prima una “lista libera”, inizializzando l’array
dei link in modo che ogni componente punti alla componente
successiva. La lista libera corrisponde alla memoria in cui allocare
la lista delle informazioni: infatti i nodi da inserire nella linked list
delle informazioni, sono prelevati dalla lista libera; mentre i nodi da
eliminare dalla lista delle informazioni vanno restituiti alla lista
libera.]
l'esercizio consiglia

Codice HTML:
array di struct NODO {INFO, pnext}
simula la memoria dove saranno
allocati i nodi della lista lineare
ListaDati.
p_Libera
Per rendere dinamica la gestione della
“memoria simulata” viene creata inizialmente
la lista lineare ListaLibera (con p_Libera
puntatore alla sua testa)
Prince_81 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2008, 11:30   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ah che complicazioni inutili
Un nodo che fa parte della lista libera è un nodo non appartenente alla lista vera e propria. Un nodo della lista libera punta sempre ad un nodo della lista libera, tranne l'ultimo che punterà a -1 (stessa cosa per la lista vera e propria).
Ti devi ovviamente tenere un indice esterno che punta al primo elemento della lista libera ed un indice esterno che punta al primo elemento della lista vera e propria.
La lista libera è composta solo da "puntatori" a next (in questo caso non sono puntatori, ma indici del vettore).
Ad esempio se sono liberi gli elementi 2, 3, 4, 6, 8 su 10 elementi, il puntatore esterno punterà a 2. Il contenuto del vettore sarà:

x, x, 3, 8, 6, x, -1, x, 4, x (supponendo che siano linkati così: 2->3->8->4->6)

Gli inserimenti di indici liberi ti converrà farli in testa. Così come l'aggiunta di nodi liberi.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2008, 11:43   #19
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
Quote:
Originariamente inviato da cionci Guarda i messaggi
Perché questa cosa ? Secondo me deve solamente indicare che un nodo è presente/assente.
io intendevo una cosa del genere (vedi allegato)
Immagini allegate
File Type: png schema.png (14.4 KB, 7 visite)
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2008, 11:48   #20
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Oceans11 Guarda i messaggi
io intendevo una cosa del genere (vedi allegato)
Sì, ha senso, però per trovare un elemento libero ti devi scorrere tutta la lista.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati Oracle AI World 2025: l'IA cambia tutto, a parti...
Portatili Acer e ASUS con 40GB di RAM a ...
Offerte Oral-B su Amazon: sconti fino al...
Withings lancia U-Scan: analisi delle ur...
Huawei lancia i nuovi top di gamma: Pura...
Netflix affida ai creatori di Life is St...
Nuove OPPO Enco X3s con cancellazione de...
Uragano Melissa, i video dal cielo fanno...
OPPO Find X9 e X9 Pro puntano tutto su f...
The Peregreen 3: il drone più vel...
Samsung mostra per la prima volta il Gal...
Top 7 Amazon bestseller delle ultime ore...
Apple accusa un ex ingegnere di aver rub...
PC Desktop Gaming con RTX 4070 Super e 3...
Pubblicità ovunque, anche sui fri...
ClearSkies, la cybersecurity europea che...
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:21.


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