This shows you the differences between two versions of the page.
sd-ca:laboratoare:lab-02 [2024/03/12 10:27] maria.sfiraiala [Laborator 2 - Liste înlănțuite] |
sd-ca:laboratoare:lab-02 [2025/03/18 16:19] (current) andrei.pirlea [LinkedList] |
||
---|---|---|---|
Line 3: | Line 3: | ||
Responsabili | Responsabili | ||
- | * [[mailto:andreipirlea03@gmail.com|Andrei Pârlea]] | + | * [[mailto:andreipirlea03@gmail.com|Andrei Pîrlea]] |
* [[mailto:stef.dascalu@gmail.com|Ștefan-Teodor Dascălu]] | * [[mailto:stef.dascalu@gmail.com|Ștefan-Teodor Dascălu]] | ||
Line 52: | Line 52: | ||
* ''<nowiki>struct Node* remove_nth_node(struct LinkedList* list, int n);</nowiki>'' șterge și întoarce al ''n''-lea element al listei. Operația presupune modificarea listei astfel încât între nodurile vecine celui eliminat să se refacă legaturile pentru a permite listei să funcționeze în continuare. Daca nu există un nod următor, ''head'' va deveni NULL, iar lista va fi goală. Dacă nodul eliminat era ''head-ul'' listei, atunci succesorul său îi va lua locul. Analog pentru ultimul nod, însă în această situație, nodul precedent devine ''tail''. **Atentie!** Funcția doar returnează nodul eliminat din listă, deci rămâne de datoria voastră să eliberați memoria ocupată de nodul obținut în urma apelului funcției. //Complexitate: ''O(n)''. Dacă se șterge primul nod, se obține o complexitate mai bună: ''O(1)''. Aceeași complexitate se obține și dacă lista este dublu înlănțuită și se șterge ultimul nod.// | * ''<nowiki>struct Node* remove_nth_node(struct LinkedList* list, int n);</nowiki>'' șterge și întoarce al ''n''-lea element al listei. Operația presupune modificarea listei astfel încât între nodurile vecine celui eliminat să se refacă legaturile pentru a permite listei să funcționeze în continuare. Daca nu există un nod următor, ''head'' va deveni NULL, iar lista va fi goală. Dacă nodul eliminat era ''head-ul'' listei, atunci succesorul său îi va lua locul. Analog pentru ultimul nod, însă în această situație, nodul precedent devine ''tail''. **Atentie!** Funcția doar returnează nodul eliminat din listă, deci rămâne de datoria voastră să eliberați memoria ocupată de nodul obținut în urma apelului funcției. //Complexitate: ''O(n)''. Dacă se șterge primul nod, se obține o complexitate mai bună: ''O(1)''. Aceeași complexitate se obține și dacă lista este dublu înlănțuită și se șterge ultimul nod.// | ||
- | * ''<nowiki>int get_size(struct LinkedList* list);</nowiki>'' întoarce numărul curent de elemente stocate în listă. //Complexitate: ''O(1)''// | + | * ''<nowiki>int get_size(struct LinkedList* list);</nowiki>'' - întoarce numărul curent de elemente stocate în listă. |
+ | |||
+ | //Complexitate: ''O(1)'' - DACA LISTA CONTINE CAMPUL SIZE IN STRUCTURA// | ||
+ | |||
+ | //Complexitate: ''O(n)'' - trebuie parcursa toata lista pentru a afla numarul de noduri // | ||
<note important> | <note important> | ||
Line 103: | Line 107: | ||
<note> | <note> | ||
- | Trebuie să vă creați cont de [[https://lambdachecker.io | Lambda Checker]], dacă nu v-ați creat deja, pe care îl veți folosi la SD pe toată durata semestrului. | + | Trebuie să vă creați cont de [[https://code.devmind.ro/ | Devmind]], dacă nu v-ați creat deja, pe care îl veți folosi la SD pe toată durata semestrului. |
</note> | </note> | ||
- | {{:sd-ca:laboratoare:lab_2:lab02_skel_2024.zip|Scheletul de laborator}} | + | {{:sd-ca:laboratoare:lab_2:skel_lab2-2025.zip|Scheletul de laborator}} |
- | Enunțurile problemelor le găsiți pe Lambda Checker, [[https://beta.lambdachecker.io/contest/68/problems?page=1| aici]]. | + | Enunțul problemei îl găsiți pe Devmind, unde veți și încărca soluțiile voastre. |
- | Tot acolo veți și încărca soluțiile voastre. | + | |
===== Interviu ===== | ===== Interviu ===== | ||
Line 115: | Line 118: | ||
Această secțiune nu este punctată și încearcă să vă facă o oarecare idee a tipurilor de întrebări pe care le puteți întâlni la un job interview (internship, part-time, full-time, etc.) din materia prezentată în cadrul laboratorului. | Această secțiune nu este punctată și încearcă să vă facă o oarecare idee a tipurilor de întrebări pe care le puteți întâlni la un job interview (internship, part-time, full-time, etc.) din materia prezentată în cadrul laboratorului. | ||
- | - Implementați o funcție de ștergere a duplicatelor dintr-o listă simplu înlănțuită sortată. | + | - Implementați o funcție de detectare a unui ciclu într-o listă simplu înlănțuită:[[https://leetcode.com/problems/linked-list-cycle/ |Linked List Cycle]]. |
- | - Implementați o funcție de detectare (+ înlăturare) a unui ciclu într-o listă simplu înlănțuită. | + | - Eliminarea celui de-al k-lea nod de la sfârșit spre început într-o listă simplu înlănțuită:[[https://leetcode.com/problems/remove-nth-node-from-end-of-list|Remove Nth Node From End of List]]. |
- | - Găsirea celui de-al k-lea nod de la sfârșit spre început într-o listă simplu înlănțuită. | + | - Inversarea unei liste simple înlățuite: [[https://leetcode.com/problems/reverse-linked-list| Reverse Linked List]]. |
Și multe altele... | Și multe altele... | ||