|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Dec 2009
Messaggi: 130
|
[C]stutture dati
Ciao a tutti, tra circa 10 giorni ho l'esame di informatica e in questo vi sara un quesito con l'inserimento o l'eliminazione di un elemento da una struttura dati che puo essere pila lista o coda.
Io piu o meno me la cavo con le strutture facendo i disegni dei mattoncini, ma non so se faccio correttamente, anche perche il pc magari lo stampa corretto ma ci sono errori nella forma. Qualcuno di voi potrebbe scrivermi il codice per inserire o eliminare un elemento da pila lista e coda? Io solitamente uso struct elemento { int inf; struct elemento *pun;}; |
![]() |
![]() |
![]() |
#2 |
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21662
|
pila inserimento in testa e cancellazione in testa: sia l'inserimento che la cancellazione avvengono sul dato puntato dal puntatore alla testa della lista
coda inserimento in coda e cancellazione in testa la cancellazione avviene dal puntatore alla testa della lista mentre per l'inserimento scorri la lista fino a che *punt vale null e sostituisci quel valore con il puntatore al nuovo valore se giochi con i blocchi vedrai che è facilissimo
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Dec 2009
Messaggi: 130
|
Si, questo lo so, ma volevo passati, se qualcuno li ha, il codice gia scritto perche magari per una cavolata mi toglie 3 punti dal compito....ad esempio ad un mio collega ha tolto qualche punto perche aveva saltato un puntatore...
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 314
|
Scrivi il codice aiutandoti con un disegno e ti sapremo dire se ci sono errori
__________________
Athlon64 x2 5600 - AsRock ALiveNF5eSata2+ - kingston 2GB ddr2 800 - GeForce 8800gts 320MB |
![]() |
![]() |
![]() |
#5 |
Bannato
Iscritto dal: Dec 2009
Messaggi: 130
|
Di seguito le strutture come le ho fatte io....spero vadano bene; qualcuno puo dirmi se ci sono errori? Se ce la fate fate infretta ke domani ho esame
![]() // inserisce un elemento nella lista struct lista * inserisci (struct lista*p){ struct lista *paus,*paus2,*paus3; if (p-inf==5){ paus=(struct lista*)malloc (sizeof(struct lista*)) paus->pun=p; p=paus; p->inf=4; return 0; } while (paus!=NULL){ paus=p; paus2=paus->pun; if(paus2->inf==5){ paus3=(struct lista*)malloc (sizeof(struct lista*)); paus3->pun=paus2; paus->pun=paus3; return p; } paus=paus->pun; } } //elimina un elemento nella lista struct lista * elimina (struct lista*p){ struct lista *paus,*paus2; if (p->inf==5) p=p->pun; paus=p; while (paus!=NULL){ paus2=paus->pun; if(paus2==5){paus->pun=paus2->pun; paus2->pun=NULL; free(paus2); return p;} paus=paus->pun;} return p; } //elimina un elemento dalla pila struct pila * elimina (struct pila*p){ struct *p2,*paus; p2=NULL; while (p!=NULL)&&(p->inf!=30){ paus=p; p=p->pun; paus->pun=NULL; paus->pun=p2; p2=paus; paus=NULL; } p=p->pun; while (p2!=NULL){ paus=p2; p2=p2->pun; paus->pun=NULL; paus->pun=p; p=paus; paus=NULL; } return p; } //inserisci un elemento nella pila struct pila* inserisci (struct pila*p){ struct *p2,*paus,*paus2; p2=NULL; if (p->inf==5){ paus2=(struct pila*)malloc(sizeof(struct pila*)); paus2->pun=p; p=paus2; paus2=NULL; return p; } else { while (p!=NULL)&&(p->inf==5){ paus=p; p=p->pun; paus->pun=p2; p2=paus; paus=NULL; } paus2=(struct pila*)malloc(sizeof(struct pila*)); paus2->pun=p; p=paus2; paus2=NULL; } while (p2!=NULL){ paus=p2; p2=p->pun; paus->pun=p; p=paus; paus=NULL; } } //elimina un elemento nella coda struct coda * elimina (struct coda *p *c){ struct *c2; c2=c; while ((p->inf!=5)&&(p!=c2)){ c->pun=p; p=p->pun; c=c->pun; c->pun=NULL;} p=p->pun; while (p==c2){ c->pun=p; p=p->pun; } c->pun=p; p=p->pun; } //inserisci un elemento nella coda struct coda * inserisci (struct coda *p*c){ struct *c2*paus; c2=c; while (p->inf==5+1){ paus=(struct coda*)malloc(sizeof(struct coda*)); paus->inf=5; c->pun=paus; c=c->pun; } while (p==c2){ c->pun=p; p=p->pun; } c->pun=p; p=p->pun; } /inserisci un elemento nella coda struct coda * inserisci (struct coda *p*c){ struct *c2*paus; c2=c; printf("\nInserisci l'elemento da inserire"); scanf("%d",&a); while (p->inf==a+1){ c->pun=p; p=p->pun; c=c->pun; c->pun=NULL; } paus=(struct coda *)malloc(sizeof(struct coda)); paus->inf=a; c->pun=paus; c=c->pun; c->pun=NULL; while(p!=c2){ c->pun=p; p=p->pun; c=c->pun; c->pun=NULL; } c->pun=p; p=p->pun; c=c->pun; c->pun=NULL; |
![]() |
![]() |
![]() |
#6 |
Bannato
Iscritto dal: Dec 2009
Messaggi: 130
|
I miei dubbi sono soprattutto sullla coda.....gli altri piu o meno li so fare.
Ovviamente quelle messe sopra sono solo delle funzioni, non i programmi completi.... |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:00.