Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

A C++ programozási nyelvSoós Sándor 1/14 C++ programozási nyelv Gyakorlat - 10. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.

Hasonló előadás


Az előadások a következő témára: "A C++ programozási nyelvSoós Sándor 1/14 C++ programozási nyelv Gyakorlat - 10. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet."— Előadás másolata:

1 A C++ programozási nyelvSoós Sándor 1/14 C++ programozási nyelv Gyakorlat - 10. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. november

2 A C++ programozási nyelvSoós Sándor 2/14 Tartalomjegyzék ● Önhivatkozó struktúrák ● Beszúrás a listába ● Lista bejárása ● Lista bejárás függvénnyel ● Beszúrás a lista elejére függvénnyel ● Beszúrás függvénnyel javítva ● Lista megsemmisítése ● Lista megsemmisítése helyesen ● Listafej ● A lista egy másik megvalósítása ● Órai és házi feladat

3 A C++ programozási nyelvSoós Sándor 3/14 Önhivatkozó struktúrák class Valami { public: Valami( int Par ) { X = Par; Kovetkezo = NULL; } int X; Valami * Kovetkezo;// nem tulajdon }; ● Mindig készítsünk ábrát! X NULL X NULL

4 A C++ programozási nyelvSoós Sándor 4/14 Beszúrás a listába int main() { Valami *lista, *vp; lista = new Valami( 10 ); vp1 = new Valami( 20 ); // füzzük be vp1-et a lista elejére! vp1->Kovetkezo = lista; lista = vp1; } lista 20 NULL 20 NULL vp1 10 NULL 10 NULL lista 20 vp1 10 NULL 10 NULL lista 20 vp1 10 NULL 10 NULL Mi történik, ha felcseréljük a két utolsó sort? Mi történik, ha felcseréljük a két utolsó sort?

5 A C++ programozási nyelvSoós Sándor 5/14 Lista bejárása 1. megoldás: while (lista != NULL ) { printf( "%d ", lista->X ); lista = lista -> kovetkezo; }; 2. megoldás: vp1 = lista; while (vp1 != NULL ) { printf( "%d ", vp1->X ); vp1 = vp1 -> kovetkezo; }; ● Melyik hogyan működik? ● Melyik jó, melyik hibás?

6 A C++ programozási nyelvSoós Sándor 6/14 Lista bejárás függvénnyel void ListaKiiro( Valami* lista ) { while ( lista != NULL ) { printf( "%d ", lista->X ); lista = lista->Kovetkezo; }; printf("\n"); }; int main() { ListaKiiro( lista );// 20 10 } ● Itt nem probléma a lista pointer elállítása?

7 A C++ programozási nyelvSoós Sándor 7/14 Beszúrás a lista elejére függvénnyel void ListaBeszuro( Valami* Lista, Valami* UjElem ) { UjElem->Kovetkezo = Lista; Lista = UjElem; }; int main() { Valami *lista, *vp1; lista = NULL; vp1 = new Valami( 30 ); ListaBeszuro( lista, vp1 ); vp1 = new Valami( 40 ); ListaBeszuro( lista, vp1 ); ListaKiiro( lista );// Mit ír ki? Miért? return 0; };

8 A C++ programozási nyelvSoós Sándor 8/14 Beszúrás függvénnyel javítva void ListaBeszuro( Valami*&Lista, Valami* UjElem ) ● A többi változatlan

9 A C++ programozási nyelvSoós Sándor 9/14 Lista megsemmisítése main()... while ( lista != NULL ) { delete lista lista = lista->Kovetkezo; }; ● Mit csinál ez a program? ● Miért?

10 A C++ programozási nyelvSoós Sándor 10/14 Lista megsemmisítése helyesen main()... while ( lista != NULL ) { vp1 = lista -> Kovetkezo; delete lista lista = vp1; }; ● Mit csinál ez a program?

11 A C++ programozási nyelvSoós Sándor 11/14 Listafej class ValamiLista { public: ValamiLista() { Lista = NULL; } ~ValamiLista(); Valami* Lista;// tulajdon } ValamiLista::~ValamiLista() { Valami* vp; while( Lista != NULL ) { vp = Lista -> Kovetkezo; delete Lista; Lista = vp; } };

12 A C++ programozási nyelvSoós Sándor 12/14 Listafej, folyt. ● Mi legyen a korábban megírt függvényekkel? ● Tegyük a Lista osztály tagfüggvényeivé! ● Miért jó, ha osztályba tesszük a listát? – biztos nem keveredik össze a lista fej más pointerekkel. – további segédinformációkat tárolhatok a listáról, pl. elemszám, átlagérték. – adatelrejtés – szabadon módosíthatom a belső ábrázolást – összefogjuk az összetartozó dolgokat

13 A C++ programozási nyelvSoós Sándor 13/14 A lista egy másik megvalósítása ● Statikus lista: int tomb[100], n class IntLista1 { public: int Tomb[100]; int elemszam; }; ● Milyen előnyei és hátrányai vannak a kétféle megoldásnak?

14 A C++ programozási nyelvSoós Sándor 14/14 Órai és házi feladat ● Készítsünk egy dinamikus Lista osztályt! ● Pontosítjuk a specifikációt a gyakorlaton és a laboron.


Letölteni ppt "A C++ programozási nyelvSoós Sándor 1/14 C++ programozási nyelv Gyakorlat - 10. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet."

Hasonló előadás


Google Hirdetések