Newsgroup: it.comp.lang.c++
Titolo: uso delle liste

Sapete indicarmi un sito che spieghi per bene cosa sono le liste e come si
usano, con tutte le varie funzione di scrittura, ordinamento, cancellazione
etc..?
Ovviamente io ho già fatto la mia ricerca e qualcosa ho trovato ma è tutto
troppo complesso....
Grazie

 cancellazione etc..?
Ti faccio un po' di esempi, ma penso che sul libro di Bruce Eckel
(partendo da 
www.bruceeckel.com
 lo trovi in PDF) siano spiegate.
Lo sono sicuramente sul libro di Stroustrup.
#include <list>
#include <string>
#include <iostream>
using std::cout;
using std::endl;
int main()
{
    std::list<std::string> lista1;
    std::list<std::string> lista2;
    std::list<std::string>::iterator i1;
    std::list<std::string>::iterator i2;
    lista1.push_back("Usenet");
    lista1.push_back("is");
    lista1.push_back("a");
    lista1.push_back("strange");
    lista1.push_back("place");
    lista2.push_back("The");
    lista2.push_back("Internet");
    lista2.push_back("is");
    lista2.push_back("full.");
    lista2.push_back("Go");
    lista2.push_back("away.");
    // a questo punto puoi fare varie operazioni:
    // scorrere le liste:
    cout << "LISTA1: ";
    for(i1=lista1.begin(); i1!=lista1.end(); i1++)
    {
        cout << *i1 << " ";
    }
    cout << endl;
    cout << "LISTA2: ";
    for(i2=lista2.begin(); i2!=lista2.end(); i2++)
    {
        cout << *i2 << " ";
    }
    cout << endl;
    // merge:
    lista1.merge(lista2);
    cout << "MERGE: ";
    for(i1=lista1.begin(); i1!=lista1.end(); i1++)
    {
        cout << *i1 << " ";
    }
    cout << endl;
    // dimensione:
    cout << "SIZE LISTA1: " << lista1.size() << endl;
    // sort
    lista1.sort();
    cout << "SORT: ";
    for(i1=lista1.begin(); i1!=lista1.end(); i1++)
    {
        cout << *i1 << " ";
    }
    cout << endl;
    // count
    cout << "COUNT - Numero di 'is': ";
    cout << std::count(lista1.begin(), lista1.end(), "is") << endl;
    // unique (elimina i duplicati)
    // n.b dei prima ordinare la lista!
    lista1.sort();
    lista1.unique();
    cout << "UNIQUE - Numero di 'is': ";
    cout << std::count(lista1.begin(), lista1.end(), "is") << endl;
    // remove:
    lista1.remove("is");
    cout << "REMOVE - Numero di 'is': ";
    cout << std::count(lista1.begin(), lista1.end(), "is") << endl;
    for(i1=lista1.begin(); i1!=lista1.end(); i1++)
    {
        cout << *i1 << " ";
    }
    cout << endl;
    // find e quindi insert
    i1=find(lista1.begin(), lista1.end(), "full.");
    lista1.insert(i1, "quite");
    for(i1=lista1.begin(); i1!=lista1.end(); i1++)
    {
        cout << *i1 << " ";
    }
    cout << endl;
}
-- 
Gerolamo
www.overweb.it

 #include <iostream>
[SNIP]
Ti ringrazio ma gran parte delle cose che hai scritto sono arabo per me...io
devo fare cose molto più semplici, per un corso di fondamenti di informatica
all'università
L'uso che devo fare delle liste è semplice e mi hanno "insegnato" il minimo.
Io so come è fatto un elemento di una lista
struct elem {
 int dato;
 elem* next;
};
e le funzioni di scrittura in testa, in coda, stampa della lista,
distruzione di una cella etc devono essere semplici, quindi niente list.h
(che non so usare), niente funzioni predefinite (in pratica dovrei sapermele
fare da solo)...devo fare tutto con i puntatori, con gli indirizzi...niente
costruttori, distruttori, classi....insomma roba da principianti.
Non so se mi sono spiegato.
Grazie.

 Non so se mi sono spiegato.
Ok, avevo frainteso, visto che in C++ esiste una libreria standard
che già implementa tutto questo.
In realtà quello che cerchi è più facile trovarlo in C che in C++
(nonostante sia completamente implementabile anche in C++)
Comunque ho trovato questo link:
http://infocom.cqu.edu.au/Staff/Mike_Turnbull/Home_Page/Lecturetts/sect301.htm
Partendo da li trovi una spiegazione che ad occhio mi pare buona,
anche se in alcune parti è pre-standard (negli header e nei namespace,
al solito....).
-- 
Gerolamo
www.overweb.it

 
Ti prego, dimmi che NON fai Ingegneria Informatica... ti prego, ti 
prego, ti prego...
-- 
Roal Zanazzi

prego, ti prego...
Io in un corso di *fondamenti* probabilmente pensato per
chi non sa nulla di programmazione (magari arriva da un
liceo classico) credo che insegnerei strutture di base
includendo sicuramente array, liste e alberi (facendo le
cose a manina con i puntatori).
E' vero che il C++ fornisce cose utili come <vector>,
<list> e <map> (grazie al cielo) ... ma la mia opinione
e' che almeno un'idea vaga di cosa ci sta dietro sia
indispensabile per chi vuole programmare in C++.
Il discorso sarebbe diverso se si vuole insegnare a
programmare *solo* in linguaggi high-level dove non ci
si sporcano le mani.
Andrea

 si sporcano le mani.
se vuoi fare quello scordati il C++/C dove padding shift e numeri
esadecimali sono all'ordine del giorno ;-)
ciao

 cose a manina con i puntatori).
In un corso di laurea rivolto all'informatica sono d'accordo,
nell'unico esame di informatica di un'altra disciplina no, ma allora
probabilmente non insegnerei il C++.
Ciao,
Nicola

...

Vero, se non fosse che per un'esigua minoranza e' cosi' per
necessita', mentre per gli altri sono sostanzialmente seghe mentali.
Ciao,
Nicola


infatti è quello che abbiamo fatto: puntatori, alberi e liste sono tra gli
ultimi argomenti del corso ma siccome ho avuto ben due professori che magari
sanno 90 ma che insegnano 20 senza parlare poi del fatto che consigliano
libri dove non ci sono tutti gli argomenti ma che ce ne sono altri che non
vengono affrontati durante il corso.
Io che non avevo mai programmato seriamente in vita mia mi trovo in grande
difficoltà, soprattutto con le liste e gli alberi

 difficoltà, soprattutto con le liste e gli alberi
	Prova a dare un'occhiata a "Introduzione alla programmazione ed elementi
di strutture dati con il linguaggio C++", FrancoAngeli. Lo hanno
aggiornato parecchio e nelle ultime versioni mi pare che abbiano ampliato
la parte sulle strutture dati. Certo non e' una bibbia del C++, pero' dato
il taglio teorico ed universitario potrebbe fare al caso tuo.
_dave_ 

dawide wrote:

Grazie, mi hai appena salvato le coronarie :-P
La risposta ideale era "no, faccio Ingegneria Gestionale", ma  va bene 
anche questa.
Sempre che tu non abbia intenzione di progettare ad esempio schede per 
PC (va beh, magari sei fortunato e i driver te li scrive qualche 
Informatico ;-)
-- 
Roal Zanazzi

 vengono affrontati durante il corso.
 >
Benvenuto nel mondo dell'universita' italiana.
Non ti stupire, ritieniti fortunato se riuscirai ad incontrare piu' di 2 
insegnanti in gamba in tutto il corso di laurea.
-- 
Roal Zanazzi

 Informatico ;-)
Hai qualche problema con i PC?  :-)

 
No, i miei colleghi Elettronici se la cavano benino con i driver delle 
schede che progettano. :-)
-- 
Roal Zanazzi

 informatica vada oltre il premere il pulsante di accensione del PC? :-P
	Giacche' stiamo a criticare l'altrui cultura informatica, non potremmo
quotare un pochino meglio? :)
_dave_

 informatica vada oltre il premere il pulsante di accensione del PC? :-P
Si
