Documente Academic
Documente Profesional
Documente Cultură
obiecte
operaii
insereaza()
intrare: ieire
L = (e0,, en-1), k Nat, e Elt L = (ek-1, e, ek,) daca 0 k n eroare n caz contrar 2
Algoritmi i programare
LLin (continuare 1)
elimina()
intrare:
L = (e0,, en-1), k Nat
ieire
L = (ek-1, ek+1) daca 0 k n-1 eroare n caz contrar
alKlea()
intrare:
L = (e0,, en-1), k Nat
ieire
ek daca 0 k n-1 eroare n caz contrar
Algoritmi i programare 3
LLin (continuare 2)
elimTotE()
intrare:
L = (e0,, en-1), e Elt
ieire:
lista L din care s-au eliminat toate elementele egale cu e
parcurge()
intrare:
L = (e0,, en-1), o procedur (funcie) viziteaza()
ieire:
lista L n care toate elementele au fost procesate aplicnd viziteaza()
Algoritmi i programare 4
LLin (continuare 3)
poz()
intrare:
L = (e0,, en-1), e Elt
ieire:
prima poziie pe care apare e n L sau -1 dac e nu apare n L
lung()
intrare:
L = (e0,, en-1)
ieire:
n lungimea listei L
Algoritmi i programare 5
en-1
0 Nat
MAX-1
Algoritmi i programare
};
daca viziteaza() proceseaz un element n O(1), atunci parcurge() proceseaz lista n O(n), unde n este numrul elementelor listei
Algoritmi i programare
e0
e1
en-1
excepii
Algoritmi i programare
ek
e L.prim e
Algoritmi i programare
e0
12
Algoritmi i programare
LLin: aplicaie
linie poligonal de puncte
Punct: structur cu dou cmpuri x i y crearea unei liste void creeazaLista(LLin &L) L = listaVida(); /* citeste n */ for (int i = 0; i < n-1; i++){ /* citeste p.x, p.y */ insereaza(L, 0, p); } atenie: timpul de execuie depinde de implementare
Algoritmi i programare 14
operaii
listaVida()
intrare: nimic ieire
() (lista cu zero elemente)
insereaza()
intrare:
L = (e0,, en-1), e Elt
ieire
L = (ek-1, e, ek,) daca ek-1 e ek (e-1= - , en = + ) Algoritmi i programare 17
LLinOrd: (continuare)
elimina()
intrare:
L = (e0,, en-1), e Elt
ieire
L = (ek-1, ek+1) daca e = ek eroare n caz contrar
Algoritmi i programare
18
Algoritmi i programare
20
operaii
push()
intrare ieire
S
Stiva, e Elt
S la care s-a adaugat e ca ultimul element introdus (cel cu vechimea cea mai mic)
21
Algoritmi i programare
Stiva (continuare 1)
pop()
intrare
S
Stiva
ieire
S din care s-a eliminat ultimul element introdus (cel cu vechimea cea mai mic) eroare dac S este vid
esteVida()
intrare
S
Stiva
ieire
true dac S este vid false dac S nu este vid
Algoritmi i programare 22
Stiva (continuare 2)
top()
intrare
S
Stiva
ieire
ultimul element introdus (cel cu vechimea cea mai mic) eroare dac S este vid
Algoritmi i programare
23
Stiva (continuare 3)
push(S, e) = insereaza(S, 0, e) pop(S) = elimina(S, 0) top(S) = alKlea(S, 0) sau push(S, e) = insereaza(S, lung(S), e) pop(S) = elimina(S, lung(S)-1) top(S) = alKlea(S, lung(S)-1)
Algoritmi i programare 24
implementarea operaiilor
push()
void push(Stiva &S, Elt e){
if (S.virf == MAX-1) { printf(eroare); return; } S.virf = S.virf+1; S.tab[virf] = e;
}
Algoritmi i programare 25
e0
Algoritmi i programare 26
pop()
void pop(Nod* S){
if (S == NULL) { printf(eroare); return; } q = S; S = S->succ; delete q;
Algoritmi i programare
27
operaii
insereaza()
C la care s-a adugat e ca ultimul element introdus (cel cu vechimea cea mai mic)
28
Algoritmi i programare
Coada (continuare 1)
elimina()
intrare
C
Coada
ieire
C din care s-a eliminat primul element introdus (cel cu vechimea cea mai mare) eroare dac C este vid
esteVida()
intrare
C
Coada
ieire
true dac C este vid false dac C nu este vid
Algoritmi i programare 29
Coada (continuare 2)
citeste()
intrare
C
Coada
ieire
primul element introdus (cel cu vechimea cea mai mare) eroare dac C este vid
Algoritmi i programare
30
Coada (continuare 3)
insereaza(C, e) = insereaza(C, lung(C), e) elimina(C) = elimina(C, 0) citeste(C) = alKlea(C, 0)
Algoritmi i programare
31
Elt[nMax]
ultim
en-1 q
e0 ei nMax-1 prim p
32
Algoritmi i programare
prim e0 e1
ultim en-1
Algoritmi i programare
34
notaia postfixat
a b+ ab2*+
reguli de preceden
a+b*2
reguli de asociere
7/3*2 la stnga (7 / 3) * 2 la dreapta 7 / (3 * 2)
Algoritmi i programare 36
Algoritmi i programare
37
x a + b * (
x c + d ) + e
inf.tab postf.tab
Elt[MAX] Elt[MAX]
S (stiva) + ( * +
a b c d + * + e +
Algoritmi i programare
38
postf.tab
Elt[MAX]
S (stiva)
a b c d + * + e +
Algoritmi i programare
40