Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
REZULTAT CHECKER
TOTAL: 100/100
VALGRIND: 20/20
TEMA 1 SDA - AHMAD ARNAOUTE 314CD
1.
-Am creat structurile specificate in enunt corespunzator
-structura tabslist e o structura basic de lista dublu inlantuita (putem accesa si first si last acestea fiind 2 noduri
prin care putem itera la stanga si la dreapta)
-structura si functiile de stiva sunt basic (invatate la lab)
-functia de initalizare a listei si a unui nod sunt basic (din nou), pt lista o folosim doar la inceput cand initalizam tabslist,
functia returnand o lista cu un singur nod, circulara, cu santinela (singurul nod fiind santinela).
-Declar toate variabilele pe care o sa le folosesc in functii local (in main).
-citesc tot ce se cere in mod normal.
2. Implementarea functiilor
NEW_TAB:
-Aceasta este functia principala care odata facuta, usureaza prima jum de taskuri (pana in Page) f mult.
-initialzam intr o var locala functiei un tab simplu cu detaliile predef
-folosim TestPage[0], o variabila nealocata dinamic in main in care am introdus valorile paginii predefinite pentru usurinta
de a elibera la final toate paginile si descrierile.
- tabul curent ia valoare tabului declarat local in functie
- adaugam la finalul listei dublu inlantuite nodul, respectand proprietatea de a fi circulara si a avea santinela (Basic)
CLOSE:
-stergem nodul tab_current (o variabila creata de mine local in main la inceputul temei care reprezinta tabul curent initializat
initial in NEW_TAB prin browser->list->last care ne usureaza treaba si la finalul functiilor in care updatam tabul curent
updatatam si campul browser->current folosind tab_current.)
-Dupa ce stergem nodul din lista in mod basic, eliberam ce am alocat dinamic in acel nod.
OPEN:
-iteram prin lista pana gasim id ul specificat (calculat manual in main).
-daca nu gasim (adica ne intoarcem de unde am plecat fara nicio solutie) atunci afisam eroarea.
-daca il gasim atunci updatatam tabul curent cu valoarea pe care o avem in iterator
NEXT:
-Pur si simplu mutam tabul current cu una la dreapta (avem putina atentie la santinela)
PREV:
-La fel ca la NEXT.
PAGE:
-iteram prin vectorul in care se afla paginile test pana gasim pagina specificata prin idul calculat in main.
-daca nu gasim idul at eroare.
-pusham ce avem in tabul curent in stiva backward
-deschidem in tabul curent pagina specif
-stergem tot ce e din stiva forward
BACKWARD:
-daca n avem nimic in stiva backward atunci eroare
-pusham in forward ce avem in curent
-deschidem in tabul curent ce avem in topul backwardului
-stergem ce avem in topul backwardului
FORWARD:
-La fel ca la BACKWARD (Reverse engineering)
PRINT:
-Afisam ce id avem in tabul curent si restul din dreapta pan ne intoarcem in tabul curent
-afisam descrierea pagini curente din tabul curent
PRINT_HISTORY:
-iteram prin lista pana gasim tabul cu idul specificat
-afisam toate urlurile paginilor deschise vreodata in tabul acela, folosindu-ne de stiva backward, forward si de tabul in sine
3. Valgrind
-Am eliberat tot ce am alocat dinamic in problema
-M am folosit de testpage pt toate paginile pe care le folosim in problema deci elibararea la final a fiecarei descrieri din acest vector
este destul.
-Parcurgem toata lista de taburi si eliberam tot ce am alocat dinamic acolo
-eliberam si browserul la final