|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
sto scrivendo una cosa io sul allocazione e inserimento di una lista
dammi 2 minuti |
|
|
|
|
|
#22 |
|
Senior Member
Iscritto dal: Apr 2007
Messaggi: 381
|
cerca di usare i nomi delle variabili che ho usato nel altrimenti devo riscrivere tutto o impazzire per adattarlo
grazie mille comq p.s. ti ricordo che l'inserimento deve essere sempre in testa alla lista, cioè primo elemtno inserito sarà l'ultimo, secondo inserito penultimo ecc.. |
|
|
|
|
|
#23 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Tanto per iniziare, dove è la variabile che tiene la "root" della lista?? Non la vedo .... vedo che fai un listaPtr=l; ma non ha senso (listaPtr è un tipo).
P.S. ma allora tutti gli esempi che ho fatto io sulle liste non sono serviti a nulla ..
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#24 |
|
Senior Member
Iscritto dal: Apr 2007
Messaggi: 381
|
si sono serviti però io sono una frana in programmazione, basta che mi cambi i nomi di tutte le variabili e non ci capisco piu niente...comq da quando hai fatto gli esempi tu non ho avuto tempo per mettermi a programmare, mi sono dimenticato tutto
|
|
|
|
|
|
#25 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
mi era sfuggito l'esempio di andbin, stavo scrivendo le stesse cose
non c'è bisogno che ti scriva nulla allora...studiati bene quel codice e inoltre nel tuo aggiungi la stdlib che serve per le malloc |
|
|
|
|
|
#26 |
|
Senior Member
Iscritto dal: Apr 2007
Messaggi: 381
|
sincerament enon capisco gli esempi di andbin con tutti quei ppnode ecc,, non è che potete correggere il mio con i nomi che ho usato? cosi da imparare dai miei errori anziche riscrivere e ricapire tutto da capo?
grazie tanto penso di aver sbagliato qualche stupidaggine |
|
|
|
|
|
#27 |
|
Senior Member
Iscritto dal: Apr 2007
Messaggi: 381
|
dovrei solo aggiungere qualcosa nel main dove ho inserito commenti ma non capiscono come scriverle quelle parti
Codice HTML:
#include <stdio.h> #include <stdlib.h> struct nodo{ int elem; struct nodo *next; }; typedef struct nodo L_ELEM; typedef struct nodo *listaPtr; listaPtr eliminaPrimo(listaPtr l, int k) { listaPtr prev,curr,tempPtr; if (k==l->elem){ tempPtr=l; l=l->next; free(tempPtr); return l; } else{ prev=l; curr=l->next; while ((curr!=NULL) && (curr->elem != k)){ prev=curr; curr=curr->next; } if (curr !=NULL){ tempPtr=curr; prev->next=curr->next; free(tempPtr); return l; } return l; } int main(){ /*DICHIARARE LISTA*/ int *temp; int i=0; int n=0; int valore=0; int k=0; scanf("%d", &n); for(i=0;i<n;i++){ listaPtr l=(listaPtr)malloc(sizeof(struct nodo)); scanf("%d", &valore); /*AGGIUNGERE*/} scanf("%d", &k); } |
|
|
|
|
|
#28 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
è che stai scrivendo male il programma
a cominciare dall'utilizzo di quelle struct senza nemmeno un typedef, si genera solo casino se poi ti stai confondendo tra strutture, puntatori e doppi puntatori, ti consiglio di ripassarti un pò il tutto...scrivere la pappa pronta non servirebbe a nulla quanto c'è da sapere come codice te l'ha scritto andbin, manca solo un pò di "teoria" da parte tua |
|
|
|
|
|
#29 |
|
Senior Member
Iscritto dal: Apr 2007
Messaggi: 381
|
comq la funzione sembra correttissima, le typedef le ho usate se guardi in alto
non capisco come si inserisce un elemento, poi come si sposta avanti e si reinserisce un elemento dietro di esso non capisco proprio come farlo, come utilizzare le liste per farlp |
|
|
|
|
|
#30 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
Codice:
int List_AddFirst (PPNODE pproot, int data)
{
PNODE pnode;
if (pproot == NULL)
return 0;
if ((pnode = (PNODE) malloc (sizeof (NODE))) == NULL)
return 0;
pnode->data = data;
pnode->next = *pproot;
*pproot = pnode;
return 1;
}
PPNODE è un puntatore alla radice o testa della lista, si ha bisogno di questo puntatore per sapere da dove "cominciare" a fare le operazioni i due if controllano se la testa/radice esiste e se è c'è memoria per allocare il nuovo blocco rispettivamente il resto è il codice per l'inserimento in testa |
|
|
|
|
|
#31 |
|
Senior Member
Iscritto dal: Apr 2007
Messaggi: 381
|
p
Ultima modifica di xbubbax : 02-01-2008 alle 16:17. |
|
|
|
|
|
#32 |
|
Senior Member
Iscritto dal: Apr 2007
Messaggi: 381
|
non la capisco proprio, se volete aiutarmi mi farebbe piacere sennò grazie lo stesso
|
|
|
|
|
|
#33 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
questa è la mia soluzione della prima parte, sulla base delle funzioni di andbin
è scritta in maniera barbara ma la puoi migliorare spero tu riesca a fare anche la seconda parte ps. la funzione che hai usato è abbastanza inutile, inoltre a quanto ho capito l'hai solo copiata visto che usa liste doppiamente linkate e altro, del tutto inutili per quello che serve a te ps ho usato programmazione modulare con adt, spero tu sappia di che si parla Ultima modifica di supermario : 31-05-2011 alle 12:30. |
|
|
|
|
|
#34 |
|
Senior Member
Iscritto dal: Apr 2007
Messaggi: 381
|
non so cosa sia adt, vabbè mi arrangio da solo, non capisco perchè mi si debba complicare la vita, devo solo aggiusta 2 righe nel mio main, bah...
|
|
|
|
|
|
#35 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Concordo.
Quote:
Per ADT si può intendere, in generale, "Abstract Data Type": http://en.wikipedia.org/wiki/Abstract_data_type http://it.wikipedia.org/wiki/Tipo_di_dato_astratto E ciò che ho scritto nel mio esempio, di ADT non ha proprio nulla.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#36 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
si lo so che nn è un vero adt
|
|
|
|
|
|
#37 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
|
|
|
|
|
|
#38 |
|
Senior Member
Iscritto dal: Apr 2007
Messaggi: 381
|
vabbè 3-4 cioè solo il for, anche se la funzione è scritta male funziona e io ci capisco quello è l'importante.
se mi fate funzioni voi per iserire gli elemtni non le capisco, è meglio che lo fate sul mio codice, ma siccome voi pensate che uno ne approfitti solo per copiare il codice e basta vi sbagliate, le cercherei di capire...ma se mi scrivere cose con doppi puntatori o adt è inutile |
|
|
|
|
|
#39 |
|
Senior Member
Iscritto dal: Apr 2007
Messaggi: 381
|
ho rifatto il programma ma l'inserimento l'ho fatto normalmente, non inserendoli in testa ma normale. però non va lo stesso come mai?
Codice HTML:
#include <stdio.h> #include <stdlib.h> struct nodo{ int elem; struct nodo *next; }; typedef struct nodo L_ELEM; typedef struct nodo *listaPtr; listaPtr eliminaPrimo(listaPtr l, int k) { listaPtr prev,curr,tempPtr; if (k==l->elem){ tempPtr=l; l=l->next; free(tempPtr); return l; } else{ prev=l; curr=l->next; while ((curr!=NULL) && (curr->elem != k)){ prev=curr; curr=curr->next; } if (curr !=NULL){ tempPtr=curr; prev->next=curr->next; free(tempPtr); return l; } return l; }} int main(){ listaPtr l; int n=0; int i=0; int k=0; int valore=0; scanf("%d", &n); for(i=0;i<n;i++){ listaPtr l=(listaPtr)malloc(sizeof(struct nodo)); scanf("%d", valore); l->elem=valore; l=l->next; } scanf("%d", &k); } |
|
|
|
|
|
#40 |
|
Senior Member
Iscritto dal: Apr 2007
Messaggi: 381
|
corretto
Codice HTML:
#include <stdio.h> #include <stdlib.h> struct nodo{ int elem; struct nodo *next; }; typedef struct nodo L_ELEM; typedef struct nodo *listaPtr; listaPtr eliminaPrimo(listaPtr l, int k) { listaPtr prev,curr,tempPtr; if (k==l->elem){ tempPtr=l; l=l->next; free(tempPtr); return l; } else{ prev=l; curr=l->next; while ((curr!=NULL) && (curr->elem != k)){ prev=curr; curr=curr->next; } if (curr !=NULL){ tempPtr=curr; prev->next=curr->next; free(tempPtr); return l; } return l; }} int main(){ listaPtr l; int n=0; int i=0; int k=0; int valore=0; scanf("%d", &n); for(i=0;i<n;i++){ listaPtr l=(listaPtr)malloc(sizeof(struct nodo)); scanf("%d", &valore); l->elem=valore; l=l->next; } scanf("%d", &k); } |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:06.




















