Liste. Stive. Cozi SD 2017/2018

Similar documents
Pentru clasa a X-a Ştiinţele naturii-sem II

array a[0..n-1] a[0] = v0,..., a[n-1] = vn-1

Inteligenta Artificiala

Sisteme cu logica fuzzy

UNITATEA DE ÎNVĂȚARE 3 Analiza algoritmilor

Reactoare chimice cu curgere piston (ideala) cu amestecare completa de tip batch (autoclava)

PRELUCRARI PE IMAGINI BINARE (ALB/NEGRU)

ȘIRURI (TABLOURI UNIDIMENSIONALE)

Soluţii juniori., unde 1, 2

O V E R V I E W. This study suggests grouping of numbers that do not divide the number

GAMINGRE 8/1/ of 7

COMPARATIVE DISCUSSION ABOUT THE DETERMINING METHODS OF THE STRESSES IN PLANE SLABS

1.3. OPERAŢII CU NUMERE NEZECIMALE

Utilizarea limbajului SQL pentru cereri OLAP. Mihaela Muntean 2015

A GENERALIZATION OF A CLASSICAL MONTE CARLO ALGORITHM TO ESTIMATE π

Divizibilitate în mulțimea numerelor naturale/întregi

Procesarea Imaginilor

Gradul de comutativitate al grupurilor finite 1

Rezolvarea ecuaţiilor şi sistemelor de ecuaţii diferenţiale ordinare (II)

Teorema Reziduurilor şi Bucuria Integralelor Reale Prezentare de Alexandru Negrescu

Sisteme de Recunoastere a Formelor Lab 12 Clasificare cu Support Vector Machine

THE BEHAVIOUR OF ELASTOMERIC BEARINGS UNDER LOAD COMBINATIONS

Arhitectura sistemelor de calcul

Reactoare chimice cu curgere piston (ideala) (Plug Flow Reactor PFR) cu amestecare completa (Mixed Flow Reactor MFR) de tip batch (autoclava)

Programarea Dinamica. (si alte chestii adiacente) Andrei Olariu

GENERATOARE DE SEMNAL DIGITALE

Subiecte geometrie licenta matematica-informatica 4 ani

"IIITO-TEC 'NIKI" & EQUIPME

Utilizarea claselor de echivalenta in analiza asistata de calculator a sistemelor cu evenimente discrete

Prelegerea 7. Sistemul de criptare AES. 7.1 Istoric

ATTENUATION OF THE ACOUSTIC SCREENS IN CLOSED SPACES

THE METROLOGY OF OPTICAL FIBRE LOSSES

Proiectarea cu Micro-Procesoare

Modelling the Steady State Characteristic of ph Neutralization Process: a Neuro-Fuzzy Approach

METODE NUMERICE: Laborator #4 Eliminare gaussiană cu pivotare totală şi scalare. Algoritmul Thomas pentru rezolvarea sistemului 3-diagonal

Laborator 5. Instructiuni de control logic : FOR, IF, WHILE. - Staţii de lucru care au instalat Orcad9.2. si MatLab 7.1

Sisteme cu logica fuzzy cu mai multe intrari (MISO)

Cristalul cu N atomi = un sistem de N oscilatori de amplitudini mici;

$IfNot ParametricTable= P_ratio_gas. P ratio,gas = 14; Raport comprimare compresor aer - Pressure ratio for gas compressor (2) $EndIf

ANOVA IN THE EDUCATIONAL PROCESS

CURS 11: Programare dinamică - II - Algoritmica - Curs 12 1

Tablouri bidimensionale(matrici)

Calcul Numeric. Cursul Anca Ignat

7. OPERATIILE ARITMETICE

Manual Limba Germana

Logică și structuri discrete. Marius Minea 25 septembrie 2017

Universitatea Politehnica Bucureşti Facultatea de Automatică şi Calculatoare Departamentul de Automatică şi Ingineria Sistemelor

Sorting DS 2017/2018

Equations P Se va nota cu y fractia din debitul masic care intra in turbina care e extrasa din turbina pentru preincalzitorul inchis

Statistical Models for Rainfall with Applications to Index Insura

PLANIFICAREA TEMELOR LA GRUPELE DE EXCELENȚĂ DISCIPLINA MATEMATICĂ AN ȘCOLAR

Barem de notare clasa a V-a

Curs 5 ELEMENTE STRUCTURALE SOLICITATE LA RASUCIRE

Ecuatii si inecuatii de gradul al doilea si reductibile la gradul al doilea. Ecuatii de gradul al doilea

ON THE QUATERNARY QUADRATIC DIOPHANTINE EQUATIONS (II) NICOLAE BRATU 1 ADINA CRETAN 2

Legi de distribuţie (principalele distribuţii de probabilitate) Tudor Drugan

Despre AGC cuasigrupuri V. Izbaș

Annual Average NYMEX Strip Comparison 7/03/2017

Clasa a 10-a. Review of preview

A PARTICULAR FORECASTING CASE FOR THE MONTHLY FLOW RATES OF THE PRUT RIVER

Average 175, , , , , , ,046 YTD Total 1,098,649 1,509,593 1,868,795 1,418, ,169 1,977,225 2,065,321

Average 175, , , , , , ,940 YTD Total 944,460 1,284,944 1,635,177 1,183, ,954 1,744,134 1,565,640

In Centre, Online Classroom Live and Online Classroom Programme Prices

Stacks. Definitions Operations Implementation (Arrays and Linked Lists) Applications (system stack, expression evaluation) Data Structures 1 Stacks

Câteva rezultate de algebră comutativă

4/68. Mini-comutatoare cu came. Prezentare generalã a sistemului. Întreruptoare Pornit-Oprit TM. Comutatoare de comandã TM.

SIMULAREA DECIZIEI FINANCIARE

2D AND 3D PROCESSING OF THE INTERDEPENDENCE BETWEEN THE COMFORT MAIN INDICATORS

7 ECUAŢII ALGEBRICE ŞI TRANSCENDENTE

A COMPARATIVE ANALYSIS OF WEB BUCKLING RESISTANCE: STEEL PLATE GIRDERS GIRDERS WITH CORRUGATED WEBS

Molegro Molecular Viewer (MMV) Program de vizualizare off-line a proteinelor si a interactiunii ligand - proteina

BABEŞ-BOLYAI UNIVERSITY CLUJ-NAPOCA FACULTY OF MATHEMATICS AND COMPUTER SCIENCE

Constructing a typical meteorological year -TMY for Voinesti fruit trees region and the effects of global warming on the orchard ecosystem

AN APPROACH TO THE NONLINEAR LOCAL PROBLEMS IN MECHANICAL STRUCTURES

DAILY QUESTIONS 28 TH JUNE 18 REASONING - CALENDAR

Hazard assessment based on radar-based rainfall nowcasts at European scale The HAREN project

TWO BOUNDARY ELEMENT APPROACHES FOR THE COMPRESSIBLE FLUID FLOW AROUND A NON-LIFTING BODY

Software Engineering using Formal Methods

1. STRUCTURI SI ARHITECTURI DE CALCULATOARE NUMERICE

Use of a ISO template for quantitative schemes : the issues. Annette Thomas

A MAXIMUM PRINCIPLE FOR A MULTIOBJECTIVE OPTIMAL CONTROL PROBLEM

STRUCTURAL INTENSITY METHOD APPLIED TO STUDY OF VIBRATIONS DAMPING / METODA INTENSIMETRIEI STUCTURALE APLICATĂ LA STUDIUL AMORTIZĂRII VIBRAŢIILOR

Graduări pe algebre de matrice

Definiţie. Pr(X a) - probabilitatea ca X să ia valoarea a ; Pr(a X b) - probabilitatea ca X să ia o valoare în intervalul a,b.

Where Was Mars At Your Birth?

Acta Technica Napocensis: Civil Engineering & Architecture Vol. 54 No.1 (2011)

FORMULELE LUI STIRLING, WALLIS, GAUSS ŞI APLICAŢII

Alterations to the Flat Weight For Age Scale BHA Data Published 22 September 2016

Jayalath Ekanayake Jonas Tappolet Harald Gall Abraham Bernstein. Time variance and defect prediction in software projects: additional figures

Chapter 1 Handout: Descriptive Statistics

Time Series Analysis

QUASIGRUPURI AUTOORTOGONALE: CONEXIUNI CU PARATOPIILE UNOR SISTEME ORTOGONALE

TUNING OF MARKOV CHAIN MONTE CARLO ALGORITHMS USING COPULAS

FEB DASHBOARD FEB JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC

Fundamentals of Software Engineering

GAUGE THEORY OF GRAVITATION ON A SPACE-TIME WITH TORSION

Fundamentals of Software Engineering

ALGORITMI DE OPTIMIZARE IN INGINERIE ELECTRICA. Sef lucrari ing. Alin-Iulian DOLAN

Computing & Telecommunications Services

Autor: Instituţia: Coordonator

Transcription:

Liste. Stive. Cozi SD 2017/2018

Conţinut Tipurile abstracte LLin, LLinOrd, Stiva, Coada Liste liniare Implementarea cu tablouri Implementarea cu liste simplu înlănțuite Liste liniare ordonate Stive Cozi Aplicație la conversie de expresii aritmetice FII, UAIC Curs 4 SD 2017/2018 2 / 58

Conţinut Tipurile abstracte LLin, LLinOrd, Stiva, Coada Liste liniare Implementarea cu tablouri Implementarea cu liste simplu înlănțuite Liste liniare ordonate Stive Cozi Aplicație la conversie de expresii aritmetice FII, UAIC Curs 4 SD 2017/2018 3 / 58

Liste liniare exemple Studenți (Adriana, George, Luiza, Maria, Daniel) Examene (Mate, Logică, SD, ACSO, IP, ENG) Zilele săptămânii (L, M, Mi, J, V, S, D) Lunile anului (Ian, Feb, Mar, Apr, Mai, Iun, Iul, Aug, Sep, Oct, Nov, Dec) FII, UAIC Curs 4 SD 2017/2018 4 / 58

Tipul abstract LLin Obiecte: L = (e 0,, e n 1 ), n 0 e i Elt (tipul abstract al elementelor) Relații: e 0 primul element al listei; e n 1 ultimul element al listei; e i elementul predecesor lui e i+1. FII, UAIC Curs 4 SD 2017/2018 5 / 58

LLin operații listavida() intrare: nimic ieșire: L = () (lista cu zero elemente) insereaza() intrare: L = (e 0,, e n 1), k Nat, e Elt ieșire: L = (, e k 1, e, e k, ), dacă 0 k n eroare în caz contrar FII, UAIC Curs 4 SD 2017/2018 6 / 58

insereaza() exemple L = (a, b, c, d, e, f, g) insereaza(l, 0, x) L = (x, a, b, c, d, e, f, g) Obs. indexul elementelor a,, g crește cu 1. insereaza(l, 2, x) L = (a, b, x, c, d, e, f, g) insereaza(l, 7, x) L = (a, b, c, d, e, f, g, x) insereaza(l, 10, x) eroare insereaza(l, 7, x) eroare FII, UAIC Curs 4 SD 2017/2018 7 / 58

LLin operații elimina() intrare: L = (e 0,, e n 1), k Nat ieșire: L = (, e k 1, e k+1, ), dacă 0 k n 1 eroare în caz contrar FII, UAIC Curs 4 SD 2017/2018 8 / 58

LLin operații elimina() intrare: L = (e 0,, e n 1), k Nat ieșire: L = (, e k 1, e k+1, ), dacă 0 k n 1 eroare în caz contrar Exemple: L = (a, b, c, d, e, f, g) elimina(l, 2) L = (a, b, d, e, f, g) Obs. indexul elementelor d,, g descrește cu 1. elimina(l, 10) eroare elimina(l, 7) eroare FII, UAIC Curs 4 SD 2017/2018 8 / 58

LLin operații alklea() intrare: L = (e 0,, e n 1), k Nat ieșire: e k, dacă 0 k n 1 eroare în caz contrar FII, UAIC Curs 4 SD 2017/2018 9 / 58

LLin operații alklea() intrare: L = (e 0,, e n 1), k Nat ieșire: e k, dacă 0 k n 1 eroare în caz contrar Exemple: L = (a, b, c, d, e, f, g) alklea(l, 0) a alklea(l, 2) c alklea(l, 6) g alklea(l, 20) eroare alklea(l, 2) eroare FII, UAIC Curs 4 SD 2017/2018 9 / 58

LLin operații elimtote() intrare: L = (e 0,, e n 1), e Elt ieșire: lista L din care s-au eliminat toate elementele egale cu e FII, UAIC Curs 4 SD 2017/2018 10 / 58

LLin operații elimtote() intrare: L = (e 0,, e n 1), e Elt ieșire: lista L din care s-au eliminat toate elementele egale cu e Exemple: L = (a, b, c, a, b, c, a) elimtote(l, a) (b, c, b, c) elimtote(l, c) (a, b, a, b, a) elimtote(l, d) (a, b, c, a, b, c, a) FII, UAIC Curs 4 SD 2017/2018 10 / 58

LLin operații parcurge() intrare: L = (e 0,, e n 1), o procedură / funcție viziteaza() ieșire: lista L în care toate elementele au fost procesate aplicând viziteaza() FII, UAIC Curs 4 SD 2017/2018 11 / 58

LLin operații parcurge() intrare: L = (e 0,, e n 1), o procedură / funcție viziteaza() ieșire: lista L în care toate elementele au fost procesate aplicând viziteaza() Exemple: L = (1, 2, 3, 1, 2, 3) parcurge(l, oridoi()) (2, 4, 6, 2, 4, 6) parcurge(l, incrementeaza()) (2, 3, 4, 2, 3, 4) FII, UAIC Curs 4 SD 2017/2018 11 / 58

LLin operații poz() intrare: L = (e 0,, e n 1), e Elt, ieșire: prima poziție pe care apare e în L sau 1 dacă e nu apare în L. FII, UAIC Curs 4 SD 2017/2018 12 / 58

LLin operații poz() intrare: L = (e 0,, e n 1), e Elt, ieșire: prima poziție pe care apare e în L sau 1 dacă e nu apare în L. Exemple: L = (a, b, c, a, b, c, d) poz(l, a) 0 poz(l, c) 2 poz(l, d) 6 poz(l, x) 1 FII, UAIC Curs 4 SD 2017/2018 12 / 58

LLin operații lung() intrare: L = (e 0,, e n 1), ieșire: n lungimea listei L. FII, UAIC Curs 4 SD 2017/2018 13 / 58

LLin operații lung() intrare: L = (e 0,, e n 1), ieșire: n lungimea listei L. Exemple: L = (a, b, c, a, b, c, d) lung(l) 7 FII, UAIC Curs 4 SD 2017/2018 13 / 58

Conţinut Tipurile abstracte LLin, LLinOrd, Stiva, Coada Liste liniare Implementarea cu tablouri Implementarea cu liste simplu înlănțuite Liste liniare ordonate Stive Cozi Aplicație la conversie de expresii aritmetice FII, UAIC Curs 4 SD 2017/2018 14 / 58

LLin implementarea cu tablouri Reprezentarea obiectelor L = (e 0,, e n 1 ) L.tab Elt[Max] e 0... e n 1 Max-1 L.ultim int L este o structură L.tab un câmp de tip tablou pentru memorarea elementelor; L.ultim un câmp pentru memorarea poziției ultimului element. FII, UAIC Curs 4 SD 2017/2018 15 / 58

LLin implementarea cu tablouri insereaza() deplasează elementele de pe poziţiile k, k + 1,... la dreapta cu o poziţie; inserează e pe poziţia k; excepţii: k < 0, k > L.ultim + 1 (n) L.ultim = Max 1. FII, UAIC Curs 4 SD 2017/2018 16 / 58

LLin implementarea cu tablouri procedure insereaza(l, k, e) begin if (k < 0 or k > L.ultim + 1) then throw eroare-pozitie incorecta if (L.ultim >= Max 1) then throw eroare-spatiu insuficient for j L.ultim downto k do L.tab[j + 1] L.tab[j] L.tab[k] e L.ultim L.ultim + 1 end Timpul de execuție: O(n). FII, UAIC Curs 4 SD 2017/2018 17 / 58

LLin implementarea cu tablouri parcurge() procedure parcurge(l, viziteaza()) begin for i 0 to L.ultim do viziteaza(l.tab[i]) end Dacă viziteaza() procesează un element în O(1), atunci parcurge() procesează lista în O(n) (n este numărul elementelor listei). FII, UAIC Curs 4 SD 2017/2018 18 / 58

Conţinut Tipurile abstracte LLin, LLinOrd, Stiva, Coada Liste liniare Implementarea cu tablouri Implementarea cu liste simplu înlănțuite Liste liniare ordonate Stive Cozi Aplicație la conversie de expresii aritmetice FII, UAIC Curs 4 SD 2017/2018 19 / 58

LLin implementarea cu structuri înlănțuite Reprezentarea obiectelor L = (e 0,, e n 1 ) L.prim L.ultim e 0 e 1... e n 1 L este o structură cu două câmpuri L.prim pointer la primul element al listei; L.ultim pointer la ultimul element al listei. un nod * p (aflat la adresa din p) are două câmpuri: p > elt(= e i ) memorează informația utilă din nod; p > succ memorează adresa nodului succesor. FII, UAIC Curs 4 SD 2017/2018 20 / 58

LLin implementarea cu structuri înlănțuite insereaza() parcurge elementele de pe pozițiile 0, 1,..., k 1; inserează un nou element după poziţia k 1; creează noul nod; memorează informații; reface legături. excepţii: lista vidă; k = 0; k = n; k < 0, k > n. FII, UAIC Curs 4 SD 2017/2018 21 / 58

LLin implementarea cu structuri înlănțuite Cazul general e k 1 e k FII, UAIC Curs 4 SD 2017/2018 22 / 58

LLin implementarea cu structuri înlănțuite Cazul general e k 1 e k FII, UAIC Curs 4 SD 2017/2018 22 / 58

LLin implementarea cu structuri înlănțuite Cazul general e k 1 e k e FII, UAIC Curs 4 SD 2017/2018 22 / 58

LLin implementarea cu structuri înlănțuite Cazul general e k 1 e k e FII, UAIC Curs 4 SD 2017/2018 22 / 58

LLin implementarea cu structuri înlănțuite Cazul general e k 1 e k e FII, UAIC Curs 4 SD 2017/2018 22 / 58

LLin implementarea cu structuri înlănțuite Cazul particular: lista vidă L.prim L.ultim FII, UAIC Curs 4 SD 2017/2018 23 / 58

LLin implementarea cu structuri înlănțuite Cazul particular: lista vidă L.prim L.ultim FII, UAIC Curs 4 SD 2017/2018 23 / 58

LLin implementarea cu structuri înlănțuite Cazul particular: lista vidă L.prim L.ultim e FII, UAIC Curs 4 SD 2017/2018 23 / 58

LLin implementarea cu structuri înlănțuite Cazul particular: lista vidă L.prim L.ultim e FII, UAIC Curs 4 SD 2017/2018 23 / 58

LLin implementarea cu structuri înlănțuite Cazul particular: lista vidă L.prim L.ultim e FII, UAIC Curs 4 SD 2017/2018 23 / 58

LLin implementarea cu structuri înlănțuite Cazul particular: inserarea la începutul listei L.prim e 0 FII, UAIC Curs 4 SD 2017/2018 24 / 58

LLin implementarea cu structuri înlănțuite Cazul particular: inserarea la începutul listei L.prim e 0 FII, UAIC Curs 4 SD 2017/2018 24 / 58

LLin implementarea cu structuri înlănțuite Cazul particular: inserarea la începutul listei L.prim e e 0 FII, UAIC Curs 4 SD 2017/2018 24 / 58

LLin implementarea cu structuri înlănțuite Cazul particular: inserarea la începutul listei L.prim e e 0 FII, UAIC Curs 4 SD 2017/2018 24 / 58

LLin implementarea cu structuri înlănțuite Cazul particular: inserarea la începutul listei L.prim e e 0 FII, UAIC Curs 4 SD 2017/2018 24 / 58

LLin implementarea cu structuri înlănțuite procedure insereaza(l, k, e) begin if (k < 0) then throw eroare-pozitie incorecta new(q); q > elt e if (k == 0 or L.prim == NULL) then q > succ L.prim; L.prim q if (L.ultim == NULL) then L.ultim q else p L.prim; j 0 while (j < k 1 and p! = L.ultim) do p p > succ; j j + 1 if (j < k 1) then throw eroare-pozitie incorecta q > succ p > succ; p > succ q if (p == L.ultim) then L.ultim q end FII, UAIC Curs 4 SD 2017/2018 25 / 58

LLin aplicație Linie poligonală de puncte. Punct: structură cu două câmpuri x și y; crearea unei liste procedure creeazalista(l) begin L listavida() /* citeste n */ for i 0 to n 1 do /* citeste p.x, p.y */ insereaza(l, 0, p) end Obs. Timpul de execuție depinde de implementare. FII, UAIC Curs 4 SD 2017/2018 26 / 58

LLin aplicație Multiplică cu 2 coordonatele unui punct: procedure ori2punct(p) begin p.x p.x 2 p.y p.y 2 end Multiplică cu 2 coordonatele unei linii poligonale: procedure ori2linie(p) begin parcurge(l, ori2punct()) end FII, UAIC Curs 4 SD 2017/2018 27 / 58

LLin aplicație translatează punct: procedure trpunct(p, dx, dy) begin p.x p.x + dx p.y p.y + dy end translatează linie poligonală: procedure trlinie(l, dx, dy) begin parcurge(l, trpunct()) end FII, UAIC Curs 4 SD 2017/2018 28 / 58

Conţinut Tipurile abstracte LLin, LLinOrd, Stiva, Coada Liste liniare Implementarea cu tablouri Implementarea cu liste simplu înlănțuite Liste liniare ordonate Stive Cozi Aplicație la conversie de expresii aritmetice FII, UAIC Curs 4 SD 2017/2018 29 / 58

Liste liniare ordonate: LLinOrd Obiecte: L = (e 0,, e n 1 ), n 0, e i Elt, e 0 e 1 e n 1 Operații: listavida() intrare: nimic ieșire: L = () (lista cu zero elemente) insereaza() intrare: L = (e 0,..., e n 1), e Elt ieșire: L = (, e k 1, e, e k, ), dacă e k 1 e e k (e 1 =, e n = + ) FII, UAIC Curs 4 SD 2017/2018 30 / 58

Liste liniare ordonate: LLinOrd elimina() intrare: L = (e 0,..., e n 1 ), e Elt ieșire: L = (, e k 1, e k+1, ), dacă e = e k eroare în caz contrar alklea() parcurge() poz() FII, UAIC Curs 4 SD 2017/2018 31 / 58

LLinOrd implementarea cu tablouri function poz(l, e) begin p 0; q L.ultim m (p + q)/2 while (L.tab[m]! = e and p < q) do if (e < L.tab[m]) then q m 1 else p m + 1 m (p + q)/2 if (L.tab[m] == e) then return m else return 1 end FII, UAIC Curs 4 SD 2017/2018 32 / 58

LLinOrd complexitatea căutării Implementarea cu tablouri: O(log 2 n); Implementarea cu liste înlănțuite: O(n); FII, UAIC Curs 4 SD 2017/2018 33 / 58

Conţinut Tipurile abstracte LLin, LLinOrd, Stiva, Coada Liste liniare Implementarea cu tablouri Implementarea cu liste simplu înlănțuite Liste liniare ordonate Stive Cozi Aplicație la conversie de expresii aritmetice FII, UAIC Curs 4 SD 2017/2018 34 / 58

Stiva FII, UAIC Curs 4 SD 2017/2018 35 / 58

Stiva aplicații Aplicații directe Istoricul paginilor web vizitate într-un browser; Sevența undo într-un editor de text; Șiruri de apeluri recursive ale unui subprogram. Aplicații indirecte Structură de date auxiliară în anumiți algoritmi; Componentă a altor structuri de date. FII, UAIC Curs 4 SD 2017/2018 36 / 58

Tipul abstract Stiva Obiecte: Liste în care se cunoaște vechimea elementelor introduse: liste LIFO (Last-In-First-Out). Operații: stivavida() intrare: nimic ieșire: S = () (lista vidă) estevida() intrare: S Stiva ieșire: true dacă S este vidă; false dacă S nu este vidă. FII, UAIC Curs 4 SD 2017/2018 37 / 58

Tipul abstract Stiva Operații: push() intrare: S Stiva, e Elt ieșire: S la care s-a adăugat e ca ultim element introdus (cel cu vechimea cea mai mică). pop() intrare: S Stiva ieșire: S din care s-a eliminat ultimul element introdus (cel cu vechimea cea mai mică); eroare dacă S este vidă. top() intrare: S Stiva ieșire: ultimul element introdus în S (cel cu vechimea cea mai mică); eroare dacă S este vidă. FII, UAIC Curs 4 SD 2017/2018 38 / 58

Stiva implementare cu liste tipul Stiva tipul LLin push(s, e) = insereaza(s, 0, e) pop(s, e) = elimina(s, 0) top(s) = alklea(s, 0) sau tipul Stiva tipul LLin push(s, e) = insereaza(s, lung(s), e) pop(s, e) = elimina(s, lung(s) 1) top(s) = alklea(s, lung(s) 1) FII, UAIC Curs 4 SD 2017/2018 39 / 58

Stiva implementarea cu tablouri Reprezentarea obiectelor S.tab Elt[Max] e 0... e n 1 Max-1 S.varf int n 1 implementarea operațiilor procedure push(s, e) begin if S.varf == Max 1 then throw eroare else S.varf S.varf + 1 S.tab[varf ] e end FII, UAIC Curs 4 SD 2017/2018 40 / 58

Stiva implementarea cu structuri înlănțuite Reprezentarea obiectelor S e n 1 e n 2. e 0 FII, UAIC Curs 4 SD 2017/2018 41 / 58

Stiva implementarea cu structuri înlănțuite Implementarea operațiilor push() procedure push(s, e) begin new(q) q > elt e q > succ S S q end pop() procedure pop(s) begin if S == NULL then throw eroare q S S S > succ delete(q) end FII, UAIC Curs 4 SD 2017/2018 42 / 58

Conţinut Tipurile abstracte LLin, LLinOrd, Stiva, Coada Liste liniare Implementarea cu tablouri Implementarea cu liste simplu înlănțuite Liste liniare ordonate Stive Cozi Aplicație la conversie de expresii aritmetice FII, UAIC Curs 4 SD 2017/2018 43 / 58

Coada FII, UAIC Curs 4 SD 2017/2018 44 / 58

Coada aplicații Aplicații directe Liste / fire de așteptare; Accesul la resurse partajate. Exemplu: imprimante. Aplicații indirecte Structură de date auxiliară în anumiți algoritmi. FII, UAIC Curs 4 SD 2017/2018 45 / 58

Tipul abstract Coada Obiecte: Liste în care se cunoaște vechimea elementelor introduse: liste FIFO (First-In-First-Out). Operații: coadavida() intrare: nimic ieșire: C = () (lista vidă) estevida() intrare: C Coada ieșire: true dacă C este vidă; false dacă C nu este vidă. FII, UAIC Curs 4 SD 2017/2018 46 / 58

Tipul abstract Coada Operații: insereaza() intrare: C Coada, e Elt ieșire: C la care s-a adăugat e ca ultim element introdus (cel cu vechimea cea mai mică). elimina() intrare: C Coada ieșire: C din care s-a eliminat primul element introdus (cel cu vechimea cea mai mare); eroare dacă C este vidă. citeste() intrare: C Coada ieșire: primul element introdus în C (cel cu vechimea cea mai mare); eroare dacă C este vidă. FII, UAIC Curs 4 SD 2017/2018 47 / 58

Coada implementare cu liste tipul Coada tipul LLin insereaza(c, e) = insereaza(c, lung(c), e) elimina(c) = elimina(c, 0) citeste(s) = alklea(c, 0) FII, UAIC Curs 4 SD 2017/2018 48 / 58

Coada implementarea cu tablouri Reprezentarea obiectelor C.tab Elt[Max] e 0... e n 1 Max-1 C.prim p q C.ultim FII, UAIC Curs 4 SD 2017/2018 49 / 58

Coada implementarea cu tablouri Reprezentarea obiectelor C.tab Elt[Max] e 0... e n 1 Max-1 C.prim p q C.ultim Max-1 C.tab Elt[Max]... e n 1 e 0... e i C.ultim q p C.prim FII, UAIC Curs 4 SD 2017/2018 49 / 58

Coada implementarea cu tablouri Implementarea operațiilor insereaza() procedure insereaza(c, e) begin if (C.ultim + 1)%Max == C.prim then throw eroare else C.ultim (C.ultim + 1)%Max C.tab[ultim] e end FII, UAIC Curs 4 SD 2017/2018 50 / 58

Coada implementarea cu structuri înlănțuite Reprezentarea obiectelor C.prim C.ultim e 0 e 1... e n 1 FII, UAIC Curs 4 SD 2017/2018 51 / 58

Coada implementarea cu structuri înlănțuite Implementarea operațiilor insereaza() procedure insereaza(c, e) begin new(q) q > elt e q > succ NULL if C.ultim == NULL then C.prim q C.ultim q else C.ultim > succ q C.ultim q end FII, UAIC Curs 4 SD 2017/2018 52 / 58

Conţinut Tipurile abstracte LLin, LLinOrd, Stiva, Coada Liste liniare Implementarea cu tablouri Implementarea cu liste simplu înlănțuite Liste liniare ordonate Stive Cozi Aplicație la conversie de expresii aritmetice FII, UAIC Curs 4 SD 2017/2018 53 / 58

Aplicație notația postfixată a expresiilor notația infixată a + b a + (b 2) notația postfixată a b + a b 2 + reguli de precedență a + b 2 reguli de asociere: 7/3 2 la stânga: (7/3) 2 la dreapta: 7/(3 2) FII, UAIC Curs 4 SD 2017/2018 54 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] S (stiva) FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a S (stiva) FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a S (stiva) + FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a b S (stiva) + FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a b S (stiva) + FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a b ( + S (stiva) FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a b c ( + S (stiva) FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a b c + ( + S (stiva) FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a b c d + ( + S (stiva) FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a b c d + ( + S (stiva) FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a b c d + S (stiva) + FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a b c d + S (stiva) + FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a b c d + S (stiva) + FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a b c d + + S (stiva) FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a b c d + + S (stiva) + FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a b c d + + e S (stiva) + FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a b c d + + e + S (stiva) + FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postixat Exemplu: a + b (c + d) + e inf.tab Elt[Max] a + b ( c + d ) + e postf.tab Elt[Max] a b c d + + e + S (stiva) FII, UAIC Curs 4 SD 2017/2018 55 / 58

Conversia infixat postfixat procedure convinfix2postfix(infix, postfix) /* infix și postfix sunt cozi*/ begin S stivavida() while (not estevida(infix)) do x citeste(infix); elimina(infix) if (operand(x) then insereaza(postfix, x) else if (x == ) ) then while (top(s)! = ( ) do insereaza(postfix, top(s)); pop(s) pop(s) else while (not estevida(s) and top(s)! = ( and priorit(top(s)) >= priorit(x)) do insereaza(postfix, top(s)); pop(s) push(s, x) while (not estevida(s)) do insereaza(postfix, top(s)); pop(s) end FII, UAIC Curs 4 SD 2017/2018 56 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + S (stiva) FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + S (stiva) a FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + S (stiva) b a FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + c b a S (stiva) FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + d c b a S (stiva) FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + c b a S (stiva) FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + S (stiva) b a FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + c + d b a S (stiva) FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + S (stiva) b a FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + S (stiva) a FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + S (stiva) b (c + d) a FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + S (stiva) a FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + S (stiva) FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + S (stiva) a + b (c + d) FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + S (stiva) e a + b (c + d) FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + S (stiva) a + b (c + d) FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + S (stiva) a + b (c + d) + e FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postixate Exemplu: a b c d + + e+ postf.tab Elt[Max] a b c d + + e + S (stiva) a + b (c + d) + e FII, UAIC Curs 4 SD 2017/2018 57 / 58

Evaluarea expresiilor postfixate function valpostfix(postfix) begin S stivavida() while (not estevida(postfix)) do x citeste(postfix); elimina(infix) if (operand(x) then push(s, x) else drp top(s); pop(s) stg top(s); pop(s) val stg op(x) drp push(s, val) val = top(s); return val end pop(s) FII, UAIC Curs 4 SD 2017/2018 58 / 58