TAD Stiva (STACK) Observaţii: 1. sunt aşezate ordonat unele peste altele. Un element nou se adaugă în stivă deasupra elementului cel mai recent

Σχετικά έγγραφα
Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate.

Metode iterative pentru probleme neliniare - contractii

(a) se numeşte derivata parţială a funcţiei f în raport cu variabila x i în punctul a.

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor X) functia f 1

Subiecte Clasa a VII-a

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor

Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM 1 electronica.geniu.ro

DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE

R R, f ( x) = x 7x+ 6. Determinați distanța dintre punctele de. B=, unde x și y sunt numere reale.

a n (ζ z 0 ) n. n=1 se numeste partea principala iar seria a n (z z 0 ) n se numeste partea

Seminariile Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reziduurilor

Planul determinat de normală şi un punct Ecuaţia generală Plane paralele Unghi diedru Planul determinat de 3 puncte necoliniare

Definiţia generală Cazul 1. Elipsa şi hiperbola Cercul Cazul 2. Parabola Reprezentari parametrice ale conicelor Tangente la conice

Aplicaţii ale principiului I al termodinamicii la gazul ideal

riptografie şi Securitate

Examen AG. Student:... Grupa:... ianuarie 2011

Sisteme diferenţiale liniare de ordinul 1

Curs 1 Şiruri de numere reale

Curs 4 Serii de numere reale

Laborator 1: INTRODUCERE ÎN ALGORITMI. Întocmit de: Claudia Pârloagă. Îndrumător: Asist. Drd. Gabriel Danciu

Subiecte Clasa a VIII-a


MARCAREA REZISTOARELOR

Esalonul Redus pe Linii (ERL). Subspatii.

5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE

Metode de interpolare bazate pe diferenţe divizate

III. Serii absolut convergente. Serii semiconvergente. ii) semiconvergentă dacă este convergentă iar seria modulelor divergentă.

Curs 14 Funcţii implicite. Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi"

V O. = v I v stabilizator

Laborator 11. Mulţimi Julia. Temă

Integrala nedefinită (primitive)

5. FUNCŢII IMPLICITE. EXTREME CONDIŢIONATE.

COLEGIUL NATIONAL CONSTANTIN CARABELLA TARGOVISTE. CONCURSUL JUDETEAN DE MATEMATICA CEZAR IVANESCU Editia a VI-a 26 februarie 2005.

Orice izometrie f : (X, d 1 ) (Y, d 2 ) este un homeomorfism. (Y = f(x)).

5.4. MULTIPLEXOARE A 0 A 1 A 2

Conice. Lect. dr. Constantin-Cosmin Todea. U.T. Cluj-Napoca

Capitolul 2 - HIDROCARBURI 2.5.ARENE

Capitolul 14. Asamblari prin pene

III. Reprezentarea informaţiei în sistemele de calcul

Seminar 5 Analiza stabilității sistemelor liniare

Criptosisteme cu cheie publică III

V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile

Valori limită privind SO2, NOx şi emisiile de praf rezultate din operarea LPC în funcţie de diferite tipuri de combustibili

Lectia VI Structura de spatiu an E 3. Dreapta si planul ca subspatii ane

a. 11 % b. 12 % c. 13 % d. 14 %

Capitolul 2 - HIDROCARBURI 2.4.ALCADIENE

BARAJ DE JUNIORI,,Euclid Cipru, 28 mai 2012 (barajul 3)

TEMA 9: FUNCȚII DE MAI MULTE VARIABILE. Obiective:

Curs 2 Şiruri de numere reale

Capitolul 2 - HIDROCARBURI 2.3.ALCHINE

T R A I A N ( ) Trigonometrie. \ kπ; k. este periodică (perioada principală T * =π ), impară, nemărginită.

28. SUPRADEFINIREA OPERATORILOR

Capitolul 2 - HIDROCARBURI 2.5.ARENE

Proiectarea filtrelor prin metoda pierderilor de inserţie

Componente şi Circuite Electronice Pasive. Laborator 3. Divizorul de tensiune. Divizorul de curent

SERII NUMERICE. Definiţia 3.1. Fie (a n ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0

Fig Impedanţa condensatoarelor electrolitice SMD cu Al cu electrolit semiuscat în funcţie de frecvenţă [36].

RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii transversale, scrisă faţă de una dintre axele de inerţie principale:,

Profesor Blaga Mirela-Gabriela DREAPTA

Spaţii vectoriale. Definiţia 1.1. Fie (K, +, ) un corp şi (V, +) un grup abelian.

Ecuaţia generală Probleme de tangenţă Sfera prin 4 puncte necoplanare. Elipsoidul Hiperboloizi Paraboloizi Conul Cilindrul. 1 Sfera.

GEOMETRIE PLANĂ TEOREME IMPORTANTE ARII. bh lh 2. abc. abc. formula înălţimii


SEMINAR 14. Funcţii de mai multe variabile (continuare) ( = 1 z(x,y) x = 0. x = f. x + f. y = f. = x. = 1 y. y = x ( y = = 0

5.1. Noţiuni introductive

Metode de sortare. Se dau n numere întregi, elemente ale unui vector a. Se cere să se aranjeze elementele vectorului a în ordine crescătoare.

I. Scrie cuvântul / cuvintele dintre paranteze care completează corect fiecare dintre afirmaţiile următoare.

2.1 Sfera. (EGS) ecuaţie care poartă denumirea de ecuaţia generală asferei. (EGS) reprezintă osferă cu centrul în punctul. 2 + p 2

Spatii liniare. Exemple Subspaţiu liniar Acoperire (înfăşurătoare) liniară. Mulţime infinită liniar independentă

Să se arate că n este număr par. Dan Nedeianu

Mulțumim anticipat tuturor acelora care vor transmite critici/observații/sugestii

Examen AG. Student:... Grupa: ianuarie 2016

Subiecte Clasa a V-a

Asupra unei inegalităţi date la barajul OBMJ 2006

1.3 Baza a unui spaţiu vectorial. Dimensiune

2. Circuite logice 2.5. Sumatoare şi multiplicatoare. Copyright Paul GASNER

ANEXA 4. OPERAŢII ARITMETICE IMPLEMENTĂRI

Conice - Câteva proprietǎţi elementare

Ovidiu Gabriel Avădănei, Florin Mihai Tufescu,

II. 5. Probleme. 20 c 100 c = 10,52 % Câte grame sodă caustică se găsesc în 300 g soluţie de concentraţie 10%? Rezolvare m g.

2 Transformări liniare între spaţii finit dimensionale

BARDAJE - Panouri sandwich

Vectori liberi Produs scalar Produs vectorial Produsul mixt. 1 Vectori liberi. 2 Produs scalar. 3 Produs vectorial. 4 Produsul mixt.

Al cincilea baraj de selecţie pentru OBMJ Bucureşti, 28 mai 2015

3. Momentul forţei în raport cu un punct...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...4

Problema a II - a (10 puncte) Diferite circuite electrice

Subiecte Clasa a VIII-a

8 Intervale de încredere

Tipuri abstracte de date.

1. PROPRIETĂȚILE FLUIDELOR

Capitolul 4 PROPRIETĂŢI TOPOLOGICE ŞI DE NUMĂRARE ALE LUI R. 4.1 Proprietăţi topologice ale lui R Puncte de acumulare

Curs 2 DIODE. CIRCUITE DR

Capitolul ASAMBLAREA LAGĂRELOR LECŢIA 25

VII.2. PROBLEME REZOLVATE

Componente şi Circuite Electronice Pasive. Laborator 4. Măsurarea parametrilor mărimilor electrice

EDITURA PARALELA 45 MATEMATICĂ DE EXCELENŢĂ. Clasa a X-a Ediţia a II-a, revizuită. pentru concursuri, olimpiade şi centre de excelenţă

SEMINARUL 3. Cap. II Serii de numere reale. asociat seriei. (3n 5)(3n 2) + 1. (3n 2)(3n+1) (3n 2) (3n + 1) = a

Câmp de probabilitate II

Cursul Măsuri reale. D.Rusu, Teoria măsurii şi integrala Lebesgue 15

CURS 5 Spaţii liniare. Spaţiul liniar R n

Transcript:

TAD Stiva (STACK) Observaţii: 1. În limbajul uzual cuvântul stivă referă o grămadă în care elementele constitutive sunt aşezate ordonat unele peste altele. Un element nou se adaugă în stivă deasupra elementului cel mai recent adăugat în stivă. Din stivă se poate accesa şi extrage doar elementul cel mai recent introdus. Exemple de stive sunt multiple: stivă de farfurii, stivă de lemne, etc. Tipul de date Stivă permite implementarea în aplicaţii a acestor situaţii din lumea reală. 2. O stivă este o structură liniară de tip listă care restricţionează adăugările şi ştergerile la un singur capăt (listă LIFO - Last In First Out). 3. Accesul într-o stivă este prespecificat (se poate accesa doar elementul cel mai recent intodus în stivă - din vârful stivei), nu se permite accesul la elemente pe baza poziţiei. Dintr-o stivă se poate şterge elementul CEL MAI RECENT introdus în stivă - cel din vârful stivei. 4. Se poate considera şi o capacitate iniţială a stivei (număr maxim de elemente pe care le poate include), caz în care dacă numărul efectiv de elemente atinge capacitatea maximă, spunem că avem o stivă plină. adăugarea în stiva plină se numeşte depăşire superioară. 5. O stivă fără elemente o vom numi stivă vidă şi o notăm Φ. ştergerea din stiva vidă se numeşte depăşire inferioară. 6. O stivă în general nu se iterează. 7. Stivele sunt frecvent utilizate în programare - recursivitate, backtracking iterativ. Tipul Abstract de Date STIVA: domeniu: S = {s s este o stivă cu elemente de tip T Element} operaţii (interfaţa): creeaza(s) {creează o stivă vidă} pre : true post : s S, s = Φ(stiva vidă)

adauga(s, e) {se adaugă un element în vârful stivei} pre : s S, e T Element, s nu e plină post : s S, s = s e, e va fi cel mai recent element introdus în stivă @ aruncă excepţie dacă stiva e plină sterge(s, e) {se scoate un element din vârful stivei} pre : s S, s Φ post : e T Element, e este cel mai recent element introdus în stivă, s S, s = s e @ aruncă excepţie dacă stiva e vidă element(s, e) {se accesează elementul din vârful stivei} pre : s S, s Φ post : s = s, e T Element, e este cel mai recent element introdus în stivă @ aruncă excepţie dacă stiva e vidă vida (s) pre : s S { adev, dacă s = Φ post : vida = fals, dacă s Φ plina (s) pre : s S { adev, dacă s e plină post : plina = f als, contrar distruge(s) {destructor} pre : post : s S s a fost distrusa (spaţiul de memorie alocat a fost eliberat) Observaţii Stiva nu este potrivită pentru aplicaţiile care necesită traversarea ei (nu avem acces direct la elementele din interiorul stivei). Afişarea conţinutului stivei poate fi realizată folosind o stivă auxiliară (scoatem valorile din stivă punându-le pe o stivă auxiliară, după care se repun pe stiva iniţială). Implementări ale stivelor folosind tablouri - vectori (dinamici) liste înlănţuite.

Figura 1: Arbore corespunzător expresiei ((((3+1) 3)/((9 5)+2)) ((3 (7 4))+6)). Exemplu O expresie aritmetică se poate reprezenta printr-un arbore binar ale cărui noduri terminale sunt asociate cu variabile sau constante şi ale cărui noduri interne sunt asociate cu unul dintre operatorii: +, -,, şi /. (Vezi Figura 1.) Fiecare nod dintr-un asemenea arbore are o valoare asociată: Aplicaţie - Dacă nodul este terminal valoarea sa este cea a variabilei sau constantei asociate. - Dacă nodul este neterminal valoarea sa este definită prin aplicarea operaţiei asociate asupra fiilor lui. Evaluarea unei expresii aritmetice din forma postfixată. Fie EP ost o expresie aritmetică CORECTĂ în forma postfixată, conţinând operatorii binari: +, -, *, /, iar ca operanzi cifre 0-9 (ex: EP ost = 1 2 + 3 4 /). Se cere să se determine valoarea expresiei (ex: valoarea este 2.25). Indicaţie: Se va folosi o stivă în care se se vor adăuga operanzii. În final, stiva va conţine valoarea expresiei. Vom putea folosi următorul algoritm. Pentru fiecare e EP ost (în ordine de la stânga la dreapta) 1. Dacă e este operand, atunci se adaugă în stivă. 2. Dacă e este operator, atunci se scot din stivă doi operanzi (op 1 şi op 2 ), se efectuează operaţia e înte cei doi operanzi (v = op 2 e op 1 ), după care se adaugă v în stivă. Obs. Aici s-ar putea depista dacă expresia nu ar fi corectă în forma postfixată (s-ar încerca extragerea unui element dintr-o stivă vidă). În presupunerea noastră că expresia în forma postfixată este validă, în final, stiva va conţine o singură valoare, care se va extrage din stivă. Această valoare reprezintă valoarea expresiei.

Temă Se dă un text care conţine caractere incluzând paranteze rotunde, paranteze drepte şi acolade. Se cere să se verifice dacă în text parantezele se închid corect. De exemplu în textul a= (2 + b[3])*5; parantezele se închid corect; în textul a = (b[0). 1]; parantezele nu se închid corect. În aplicaţie, se vor folosi operaţiile din interfaţa TAD Stivă.

TAD Coada (QUEUE) Observaţii: 1. În limbajul uzual cuvântul coadă se referă la o înşiruire de oameni, maşini, etc., aranjaţi în ordinea sosirii şi care aşteaptă un eveniment sau serviciu. Noii sosiţi se poziţionează la sfârşitul cozii. Pe măsură ce se face servirea, oamenii se mută câte o poziţie înainte, până când ajung în faţă şi sunt serviţi, asigurându-se astfel respectarea principiului primul venit, primul servit. Exemple de cozi sunt multiple: coada de la benzinării, coada pentru cumpărarea unui produs, etc. Tipul de date Coadă permite implementarea în aplicaţii a acestor situaţii din lumea reală. 2. O coadă este o structură liniară de tip listă care restricţionează adăugările la un capăt şi ştergerile la celălalt capăt (lista FIFO - First In First Out). 3. Accesul într-o coadă este prespecificat (se poate accesa doar elementul cel mai devreme introdus în coadă), nu se permite accesul la elemente pe baza poziţiei. Dintr-o coadă se poate şterge elementul CEL MAI DEVREME introdus (primul). 4. Se poate considera şi o capacitate iniţială a cozii (număr maxim de elemente pe care le poate include), caz în care dacă numărul efectiv de elemente atinge capacitatea maximă, spunem că avem o coadă plină. adăugarea în coada plină se numeşte depăşire superioară. 5. O coadă fără elemente o vom numi coadă vidă şi o notăm Φ. ştergerea din coada vidă se numeşte depăşire inferioară. 6. O coadă în general nu se iterează. 7. Cozile sunt frecvent utilizate în programare - crearea unei cozi de aşteptare a task-urilor într-un sistem de operare. dacă task-urile nu au asociată o prioritate, ele sunt procesate în ordinea în care intră în sistem Coadă. dacă task-urile au asociate o prioritate şi trebuie procesate în ordinea priorităţii lor Coadă cu priorităţi. Tipul Abstract de Date COADA: domeniu: C = {c c este o coadă cu elemente de tip T Element} operaţii:

creeaza(c) {creează o coadă vidă} pre : true post : c C, c = Φ(coada vidă) adauga(c, e) {se adaugă un element la sfârşitul cozii} pre : c C, e T Element, c nu e plină post : c C, c = c e, e va fi cel mai recent element introdus în coadă @ aruncă excepţie dacă coada e plină sterge(c, e) {se şterge primul element introdus în coadă} pre : c C, c Φ post : e T Element, e este elementul cel mai devreme introdus în coadă, c C, c = c e @ aruncă excepţie dacă coada e vidă element(c, e) {se accesează primul element introdus în coadă} pre : c C, c Φ post : c = c, e T Element, e este elementul cel mai devreme introdus în coadă @ aruncă excepţie dacă coada e vidă vida (c) pre : c C { adev, dacă c = Φ post : vida = fals, dacă c Φ plina (c) pre : c C { adev, dacă c e plină post : plina = f als, contrar distruge(c) {destructor} pre : post : c C c a fost distrusa (spaţiul de memorie alocat a fost eliberat) Observaţii Coada nu este potrivită pentru aplicaţiile care necesită traversarea ei (nu avem acces direct la elementele din interiorul cozii). Afişarea conţinutului cozii poate fi realizată folosind o coadă auxiliară (scoatem valorile din coadă punându-le într-o coadă auxiliară, după care se reintroduc în coada iniţială). Implementări ale cozilor folosind tablouri - vectori (dinamici) - reprezentare circulară (Figura 2). liste înlănţuite.

Generalizare a cozilor Coada completă (Double ended queue - DEQUEUE) - adăugări, ştergeri se pot face la ambele capete ale cozii. Aplicaţie Translatarea unei expresii aritmetice din forma infixată în forma postfixată. Fie E o expresie aritmetică CORECTĂ în forma infixată, fără paranteze, conţinând operatorii binari: +, -, *, /, iar ca operanzi cifre 0-9 (ex: E = 1 + 2 3). Se cere să se determine forma postfixată EP ost a expresiei (ex: EP ost = 1 2 3 +). Indicaţie: Se va folosi o stivă în care se se vor adăuga operatorii şi o coadă EP ost care va conţine în final forma postfixată a expresiei. Vom putea folosi următorul algoritm. Pentru fiecare e E (în ordine de la stânga la dreapta) 1. Dacă e este operand, atunci se adaugă în coada EP ost. 2. Dacă e este operator, atunci se scot din stivă operatorii având prioritatea de evaluare mai mare sau egală decât a lui e şi se adaugă în coada EP ost, după care se adaugă e în stivă. Se scot din stivă operatorii rămaşi şi se adaugă în coada EP ost. În final, EP ost va conţine forma postfixată a expresiei. Temă. Trataţi cazul în care expresia în forma infixată conţine paranteze (ex: E = (1 + 2) 3). Indicaţie: Ideea/algoritmul de bază este acelaşi ca şi în cazul în care expresia nu ar conţine paranteze. Paranteza deschisă ( se va adăuga în stivă. Va trebui să identificaţi paşii care vor trebui efectuaţi la întâlnirea unei paranteze închise ).