






Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Questa lezione introduttiva alle strutture dati complesse presenta esempi e spiegazioni su array di puntatori, pile (stack), coda (queue), liste semplici e doppiamente linkate. Il documento include anche codice c per illustrare l'implementazione di pile e coda utilizzando array.
Tipologia: Slide
1 / 10
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!







Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
3
strin[0]
0xAB
strin[1]
0xB
strin[2]
0xAC
0xAB
0xB
0xAC 0xB0F
strin[3]
0xB0F
0xB0F
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
5
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
7
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
13
#include
push(
do {
menu( );cout<<“Seleziona una voce”;cin>>scelta;} while(scelta <1 || scelta >5); switch(scelta) {case 1:
clearCoda( );break;
case
void
push(
void readCoda( );void menu( );int main( ){
int scelta;clearCoda( );do {
case
pop( );break;
case 3:
push( );break;
case 4:
readCoda( );break;
}while(scelta !=5);return 0; }
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
if( fine ==-1)
cout<<“La coda e’ vuota. Impossibile estrarre un dato”<< endl; else{
cout << “Elemento estratto = “ << Coda[0] << endl;for(int i=1; i<= fine; i++) Coda[i-1] = Coda[i];fine- -; } }} void push( ) {
int dato;if (fine == MAX-1)
cout<<“La coda è piena. Impossibile inserire altri dati”<< endl; else{
cout << “dato da inserire = “;cin>> dato;fine++;Coda[fine] = dato; } }
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
15
void clearCoda( ) {
fine = -1;cout<< “Coda vuota” << endl; } void readCoda( ) {
for(int i=0; i<= fine; i++) {cout<< Coda[i] << endl; }} } void menu( ) {
cout << endl;cout << “1. Pulisci coda” << endl;cout << “2. Estrai un dato” << endl;cout << “3. Aggiungi un dato” << endl;cout << “4. Leggi coda” << endl;cout << “5. Fine” << endl; }^ Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
17
a cura di Pascoschi Giovanni
0xBA
0xBB
0xBA
head
0xBA
0xBA
0xBB
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
19
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
void InsertList( ) {
string Nomeins;Node*
nuovo; // puntatore del nuovo nodo
Node*
curr;
// puntatore temporaneo
Node*
prec;
// puntatore al nodo precedente
cout<< “Nominativo da inserire”;
//info nuovo nodo
cin>> Nomeins; nuovo = new Node;nuovo = new Node; nuovo-> nome = Nomeins;nuovo->next = NULL; if(IsEmptyList()==true) head = nuovo; // se lista vuota nuovo = nuova testaelse {
if(head->nome >= nuovo->nome) {
//nuovo nodo precede testa in ord. alf?
curr = head;
// la testa diventa il nodo curr
head = nuovo;
// il nuovo nodo diventa la testa
head->next = curr;
//il puntatore al next di testa è curr
return; }
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
25
else {
curr = head;
//nodo fluttuante temporaneo
while(curr != NULL && nuovo->nome>=curr->nome) { // si scorre la lista fino alla fine
prec = curr;
// il nodo temporaneo diventa il nodo precedente
curr = curr->next;
// il puntatore al successivo viene assegnato a temp
} nuovo->next = curr;
// si è trovato il nodo che segue il nodo nuovo
prec->next = nuovo; }}
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
void RemoveList( ) {
string Nomeins;Node*
curr;
// puntatore temporaneo
Node*
prec;
// puntatore al nodo precedente
bool trovato = false; cout<< “Nominativo da rimuovere”;cin>> Nomeins; if(IsEmptyList()==true) cout<<“La lista è già vuota”<<endl; // lista vuotaelse {
if(head->nome == Nomeins) {
//nome = nome inserito?
trovato = true;
// la testa diventa il nodo curr
curr = head->next;
// il nuovo nodo diventa la testa : si salva head
next
cout<<“Nome eliminato: “<< head->nome <<endl;delete head;head= curr;
// nuova testa è l’elemento successivo
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
27
else {
curr = head->next; //nodo fluttuante temporaneoprec = head; while( !trovato && curr != NULL)
// si scorre la lista fino alla fine
if(curr->nome == Nomeins) {
trovato = true;prec->next = curr->next;
// il nodo curr viene bypassato
cout<< “Nome eliminato :”<< curr->nome << endl; delete curr;delete curr; } else {
prec = curr;
// curr diventa il nodo precedente
curr = curr->next;
// curr->next diventa in nuovo curr
} if(! trovato) cout<<“Nome non trovato nella lista”<<endl;; }
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
29
head
tail
head
tail
head
tail
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
0xBAF
head0xBA
0xBB
0xBA
0xBAF
0xBB
0xBB
tail
0xBA
0xBAF
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
31
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni
37
Domande?
Fondamenti di Informatica A.A. 2012-
a cura di Pascoschi Giovanni