40 najboljih pitanja i odgovora za intervju s povezanom listom (2026.)

Priprema za intervju za strukturu podataka zahtijeva fokus na izazove. Pitanja za intervju s povezanom listom otkrivaju dubinu rjeลกavanja problema, logiku pokazivaฤa, svjesnost o pamฤenju i kako kandidati rasuฤuju kroz rubne sluฤajeve.
Savladavanje povezanih popisa otvara uloge u razliฤitim proizvodnim timovima, platformama i sistemskom inลพenjerstvu. Praktiฤno iskustvo gradi snaลพnu tehniฤku struฤnost, analitiฤko razmiลกljanje i ฤiste navike kodiranja. Od poฤetnika do starijih profesionalaca, ovaj skup vjeลกtina podrลพava stvarno otklanjanje pogreลกaka, analizu performansi, mentoriranje mlaฤih studenata i suradnju s menadลพerima na skalabilnim rjeลกenjima koristeฤi napredne koncepte iz iskustva. ฤitaj viลกeโฆ
๐ Besplatno preuzimanje PDF-a: Povezani popis pitanja i odgovora za intervju
Pitanja i odgovori za intervju s najpopularnijim linkovima
1) Objasnite ลกto je povezana lista i kako se razlikuje od niza.
A povezan popis je linearna struktura podataka u kojoj su elementi, nazvani ฤvorovi, povezani pomoฤu pokazivaฤa ili referenci. Svaki ฤvor sadrลพi podatke i pokazivaฤ/referencu na sljedeฤi ฤvor na popisu. Za razliku od nizova, povezani popisi ne pohranjuju elemente u susjednu memoriju.
Kljuฤne razlike izmeฤu povezane liste i niza:
| svojstvo | Povezani popis | Poredak |
|---|---|---|
| Dodjela memorije | Dinamiฤan | statiฤki |
| Vrijeme pristupa elementu | O (n) | O (1) |
| Umetanje/brisanje | Uฤinkovit (na bilo kojoj poziciji) | Skupo (potrebno premjeลกtanje) |
| Optereฤenje memorije | Dodatni prostor za pokazivaฤe | Nema dodatnog pokazivaฤa iznad glave |
Ukratko, povezane liste ลพrtvuju brลพe umetanje i dinamiฤko dimenzioniranje za sporiji nasumiฤni pristup i dodatno optereฤenje memorijom zbog pokazivaฤa.
2) Koje su razliฤite vrste povezanih popisa?
Postoje nekoliko vrsta povezanih lista, a anketari vas ฤesto traลพe da ih razlikujete:
- Jednostruko povezana lista: Svaki ฤvor pokazuje samo na sljedeฤi ฤvor.
- Dvostruko povezani popis: ฤvorovi imaju dva pokazivaฤa: jedan na sljedeฤi i jedan na prethodni ฤvor.
- Kruลพna povezana lista: Posljednji ฤvor pokazuje natrag na prvi ฤvor, tvoreฤi petlju.
- Dvostruko kruลพna povezana lista: Kombinira kruลพne i dvostruko povezane liste.
Svaka vrsta ima razliฤite sluฤajeve upotrebe na temelju potreba za prolaskom i memorijom. Na primjer, dvostruko povezane liste omoguฤuju jednostavno prolaลพenje unatrag po cijenu dodatnih pokazivaฤa.
3) Kako obrnuti jednostruko povezanu listu? (Pristup kodiranju)
RevKoriลกtenje povezane liste klasiฤno je pitanje na intervjuu. Cilj je promijeniti smjer pokazivaฤa tako da se lista obrne na mjestu bez dodjeljivanja novih ฤvorova.
Kljuฤna ideja:
Koristite tri pokazivaฤa โ prev, curri next โ i iterirajte kroz popis. U svakom koraku preusmjerite curr.next do prev, zatim pomaknite sve pokazivaฤe naprijed.
ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while (curr != null) {
ListNode next = curr.next;
curr.next = prev;
prev = curr;
curr = next;
}
return prev; // New head
}
Ovo transformira povezanu strukturu bez dodatnog prostora i pokreฤe se O (n) vrijeme.
4) Objasnite tehniku โโโโdvostrukog pokazivaฤa za pronalaลพenje sredine povezane liste.
Najuฤinkovitiji naฤin za pronalaลพenje srednjeg ฤvora povezane liste je koriลกtenje dva pokazivaฤa:
- A spori pokazivaฤ pomiฤe jedan ฤvor odjednom.
- A brzi pokazivaฤ pomiฤe dva ฤvora odjednom.
Kada brzi pokazivaฤ doฤe do kraja, spori pokazivaฤ ฤe biti na sredini. Ova tehnika djeluje u O (n) vrijeme bez dodatnog prostora.
5) Kako biste otkrili ciklus u povezanoj listi?
Detekcija ciklusa je joลก jedan klasiฤan problem. Standardno rjeลกenje koristi Floydov algoritam kornjaฤe i zeca:
- Potez
slow pointerkorak po korak. - Potez
fast pointerdva koraka odjednom. - Ako lista ima ciklus, dva pokazivaฤa ฤe se susresti.
Ako brzi pokazivaฤ dosegne null, lista nema ciklus. Ova metoda se izvrลกava u O (n) vrijeme i O (1) prostor.
6) Koje su prednosti i nedostaci povezanih popisa?
Povezane liste nude nekoliko prednosti i nedostataka:
| Prednosti | Nedostaci |
|---|---|
| Dinamiฤka veliฤina | Nema sluฤajnog pristupa |
| Jednostavno umetanje/brisanje | Dodatna memorija za pokazivaฤe |
| Uฤinkovito za rastuฤe podatke | Loลกe performanse predmemorije |
Povezane liste dobro funkcioniraju za dinamiฤke podatke, ali mogu biti sporije od nizova za pristup elementima jer svaki pristup zahtijeva prolazak od poฤetka do kraja.
7) Kako spojiti dvije sortirane povezane liste?
Spajanje dvaju sortiranih popisa joลก je jedan ฤest problem u intervjuu. Ideja je istovremeno proฤi kroz oba popisa i izgraditi novi sortirani popis odabirom manjeg ฤvora s bilo kojeg popisa u svakom koraku.
ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode dummy = new ListNode(0);
ListNode tail = dummy;
while (l1 != null && l2 != null) {
if (l1.val < l2.val) {
tail.next = l1;
l1 = l1.next;
} else {
tail.next = l2;
l2 = l2.next;
}
tail = tail.next;
}
tail.next = (l1 != null) ? l1 : l2;
return dummy.next;
}
Ova metoda ฤuva sortirani redoslijed i izvrลกava se u O(n + m) vrijeme za liste duljina n i m.
8) Objasnite kako izbrisati N-ti ฤvor s kraja povezane liste.
Najuฤinkovitija tehnika koristi dva pokazivaฤa odvojeni s n ฤvorova. Pomaknite prvi pokazivaฤ za n koraka, a zatim pomaknite oba pokazivaฤa dok prvi ne doฤe do kraja. Drugi pokazivaฤ ฤe tada biti neposredno prije ciljnog ฤvora.
Time se izbjegava zasebno izraฤunavanje duljine popisa i dovrลกava se u O (n) vrijeme. Takoฤer obraฤuje rubne sluฤajeve poput uklanjanja prvog ฤvora.
9) Kolika je vremenska sloลพenost pristupa k-tom elementu u povezanoj listi?
Pristupanje datoteci k-ti element u povezanoj listi zahtijeva prolazak od poฤetka dok se ne doฤe do k-ti ฤvor. Buduฤi da povezane liste ne omoguฤuju izravno indeksiranje, to koลกta O (n) vrijeme u najgorem sluฤaju.
Nasuprot tome, nizovi podrลพavaju izravno indeksiranje u O (1) vrijeme.
10) Zaลกto biste koristili povezanu listu umjesto niza?
Povezane liste su posebno korisne kada:
- Oฤekujete ฤesta umetanja i brisanja na proizvoljnim pozicijama.
- Ne znate unaprijed veliฤinu svojih podataka.
- Fragmentacija memorije oteลพava kontinuiranu alokaciju memorije.
Podrลพavaju uฤinkovitu dinamiฤku alokaciju memorije i umetanje/brisanje u konstantnom vremenu na kraju liste ili s poznatom referencom ฤvora - prednosti koje nizovi ne mogu postiฤi.
11) Koje su primjene povezanih popisa u stvarnom svijetu?
Povezane liste se ลกiroko koriste u sustavima gdje dinamiฤka dodjela memorije, ฤesta umetanja, ili strukture podataka promjenjive veliฤine su obavezni. Implementirani su u nekoliko temeljnih koncepata i primjena raฤunalne znanosti kao ลกto su:
- Dinamiฤko upravljanje memorijom (koristi se u operativnim sustavima)
- Funkcije poniลกtavanja/ponovljivanja u ureฤivaฤima teksta
- Ulanฤavanje hash tablica za rjeลกavanje sudara
- Navigacija popisa pjesama za reprodukciju glazbe ili videozapisa
- Reprezentacija susjednosti grafa
- Polinomske aritmetiฤke operacije
Ovi primjeri istiฤu kako povezane liste pruลพaju fleksibilnost i uฤinkovitu manipulaciju nizovima tamo gdje bi promjena veliฤine niza bila skupa.
12) Objasnite razliku izmeฤu jednostruko i dvostruko povezane liste.
| svojstvo | Pojedinaฤno povezani popis | Dvostruko povezana lista |
|---|---|---|
| upuฤuje | 1 (samo sljedeฤi ฤvor) | 2 (prethodni i sljedeฤi) |
| obuhvaฤanje | Samo jedan smjer | Oba smjera |
| Memorija Obiฤaj | Less (samo jedan pokazivaฤ) | Viลกe (dodatni pokazivaฤ) |
| brisanje | Teลพe (potreban prethodni ฤvor) | Jednostavnije |
| Primjer upotrebe | Implementacija stoga | Navigacija povijesti preglednika |
A dvostruko povezana lista je svestraniji, ali troลกi dodatnu memoriju. Nasuprot tome, pojedinaฤno povezane liste lagani su i uฤinkoviti za jednosmjerni prolaz.
13) Kako ukloniti duplikate iz sortirane povezane liste?
Kada je povezana lista veฤ sortirana, duplikati ฤe biti susjedni.
Proฤite kroz popis i usporedite podatke svakog ฤvora sa sljedeฤim ฤvorom. Ako se podudaraju, preskoฤite sljedeฤi ฤvor.
void removeDuplicates(ListNode head) {
ListNode current = head;
while (current != null && current.next != null) {
if (current.val == current.next.val) {
current.next = current.next.next;
} else {
current = current.next;
}
}
}
Sloลพenost: O(n) vremena i O(1) prostora.
Za nesortirane popise, HashSet se moลพe koristiti za praฤenje viฤenih vrijednosti.
14) Koja je razlika izmeฤu linearne i kruลพne povezane liste?
| svojstvo | Linearna povezana lista | Kruลพni povezani popis |
|---|---|---|
| Posljednji ฤvor | Bodovi za NULL | Ukazuje na glavni ฤvor |
| obuhvaฤanje | Zavrลกava kada next == NULL |
Neprekidni prolaz |
| Koristite sluฤaj | Stog, Red ฤekanja | Kruลพno rasporeฤivanje |
| Sloลพenost | jednostavnije | Sloลพenije rukovanje |
Kruลพne liste su posebno korisne u primjenama kao ลกto je rasporeฤivanje CPU-a, gdje se procesi cikliฤki izvrลกavaju.
15) Kako se pronalazi presjek dviju povezanih lista?
Da biste utvrdili sijeku li se dvije jednostruko povezane liste:
- Izraฤunajte duljine oba popisa.
- Pomakni pokazivaฤ duลพeg popisa za razliku u duljinama.
- Prolazite obje liste istovremeno dok ฤvorovi ne postanu identiฤni.
Alternativno, a HashSet moลพe se koristiti za pohranjivanje posjeฤenih ฤvorova za O(n) prostora.
Ovaj pristup je uฤinkovit i ฤesto se postavlja u intervjuima za rukovodeฤe pozicije.
16) Kako provjeriti jesu li dvije povezane liste identiฤne?
Dvije povezane liste su identiฤne ako:
- Imaju isti broj ฤvorova.
- Odgovarajuฤe vrijednosti ฤvorova su identiฤne po redoslijedu.
Algoritam:
- Pregledajte oba popisa zajedno.
- Usporedite podatke svakog ฤvora.
- Ako se svi parovi podudaraju i oba dosegnu NULL, identiฤni su.
Vremenska sloลพenost: O (n)
Sloลพenost prostora: O (1)
17) ล to je curenje memorije u kontekstu povezanih lista?
A curenje memorije dogaฤa se kada dinamiฤki dodijeljeni ฤvorovi nisu osloboฤeni nakon upotrebe.
U povezanim listama, ako delete or free() ne poziva se na ฤvorovima uklonjenim s popisa, memorija ostaje zauzeta iako viลกe nije dostupna.
Na primjer, neuspjeh u oslobaฤanju izbrisanih ฤvorova u C/C++ dovodi do postupnog iscrpljivanja memorije, ลกto uzrokuje usporavanje ili pad sustava.
Pravilno ฤiลกฤenje pomoฤu destruktora ili eksplicitne dealokacije izbjegava ovaj problem.
18) Objasnite kako implementirati stog pomoฤu povezane liste.
U stog, elementi slijede LIFO redoslijed (Last In, First Out - zadnji unutra, prvi van).
Povezana lista je idealna jer se umetanja i brisanja uฤinkovito dogaฤaju na poฤetku.
Operaticije:
- Gurnuti: Umetnite novi ฤvor na zaglavlje.
- Pop: Uklonite ฤvor s glave.
- Zaviriti: Vrati podatke o glavi.
Prednosti:
Nema potrebe za nizom fiksne veliฤine; raste dinamiฤki kako se elementi dodaju.
19) Kako se povezana lista moลพe koristiti za implementaciju reda ฤekanja?
U red, elementi slijede FIFO (First In, First Out) redoslijed.
Koristite povezanu listu gdje:
- Umetanje (Dodaj u red): Dodajte ฤvor na repu.
- Ukloni (Decomposite Reach): Izbriลกi ฤvor iz glave.
To omoguฤuje obje operacije u O (1) vrijeme s dva pokazivaฤa โ front i rear.
Obiฤno se koristi u sustavima za rasporeฤivanje procesa i redovima ฤekanja pisaฤa.
20) Koje su razlike izmeฤu niza popisa i povezanog popisa u Java?
| Aspekt | ArrayList | LinkedList |
|---|---|---|
| ฤuvanje | Dinamiฤki niz | Dvostruko povezana lista |
| Vrijeme pristupa | O (1) | O (n) |
| Umetni/Izbriลกi | Skupo u sredini | Uฤinkovito na kraju |
| Optereฤenje memorije | Less | Viลกe (dodatni savjeti) |
| Koristite sluฤaj | ฤesti pristup | ฤesto umetanje/brisanje |
Primjer: Koristiti ArrayList za operacije s velikim brojem pretraga i LinkedList kada dominiraju operacije umetanja/brisanja.
21) Kako izravnati viลกerazinsku povezanu listu?
A viลกerazinska povezana lista moลพe sadrลพavati ฤvorove koji imaju oboje next i child pokazivaฤi (svako dijete vodi do druge povezane liste). Cilj je izravnati sve ฤvorove u povezanu listu jedne razine.
Pristup:
- Koristiti stog or rekurzivna funkcija.
- Poฤnite od glavnog ฤvora.
- Ako ฤvor ima
childgurni ganextฤvor na stog i napravichildasnext. - Nastavite dok se stog ne isprazni.
Sloลพenost vremena: O (n)
Sloลพenost prostora: O(n) za rekurziju/slog.
Primjer (konceptualno):
1 - 2 - 3
|
4 - 5
Flattened โ 1 โ 2 โ 4 โ 5 โ 3
Ovo pitanje procjenjuje vaลกe razumijevanje rekurzije i manipulacije pokazivaฤima.
22) Kako klonirati povezanu listu sa sluฤajnim pokazivaฤima?
Svaki ฤvor u ovoj posebno povezanoj listi ima dva pokazivaฤa:
nextโ pokazuje na sljedeฤi ฤvor.randomโ pokazuje na bilo koji proizvoljni ฤvor.
Algoritam (3 koraka):
- Umetnite klonirane ฤvorove izmeฤu originalnih ฤvorova.
- Dodijelite sluฤajne pokazivaฤe za klonove (
clone.random = original.random.next). - Odvojite dva popisa.
Time se izbjegava dodatni prostor za hash mapu i izvrลกava se u O (n) vrijeme sa O (1) dodatni prostor.
Sluฤaj upotrebe: Dubinsko kopiranje sloลพenih struktura podataka (npr. grafova ili referenci objekata).
23) ล to je lista za preskakanje i kako je povezana s povezanim listama?
A popis za preskakanje je slojevita struktura povezanih lista koja omoguฤuje brzo pretraลพivanje, umetanje i brisanje (sliฤno uravnoteลพenim stablima).
| OperaANJE | Prosjeฤno vrijeme | Najgori sluฤaj |
|---|---|---|
| Traลพi | O (zapisnik n) | O (n) |
| Umetni/Izbriลกi | O (zapisnik n) | O (n) |
Sadrลพi viลกe razina, gdje gornje razine "preskaฤu" nekoliko ฤvorova, poboljลกavajuฤi uฤinkovitost pretraลพivanja.
Primjer: Koristi se u bazama podataka poput Redisa i istovremenim implementacijama mapa.
24) Kako moลพete otkriti palindrom u povezanoj listi?
Povezana lista je palindrom ako se ฤita isto unaprijed i unatrag.
Algoritam:
- Pronaฤite sredinu popisa.
- Revprije druge polovice.
- Usporedite dvije polovice ฤvor po ฤvor.
Ako se svi odgovarajuฤi ฤvorovi podudaraju, to je palindrom.
Primjer:
1 โ 2 โ 3 โ 2 โ 1 โ โ
Palindrom
1 โ 2 โ 3 โ 4 โ โ Nije palindrom
Sloลพenost vremena: O (n)
Sloลพenost prostora: O (1)
25) Kako ukloniti petlju u povezanoj listi?
Ako postoji petlja (koriลกtenjem Floydovog detektiranja ciklusa), uklonite je slijedeฤi ove korake:
- Otkrijte mjesto susreta sporih i brzih pokazivaฤa.
- Pomaknite jedan pokazivaฤ prema glavi.
- Pomiฤite oba pokazivaฤa korak po korak dok se ne sretnu u poฤetni ฤvor petlje.
- Postavi prethodni ฤvor
nextdonull.
Ovaj pristup osigurava da nema dodatne upotrebe memorije prilikom rjeลกavanja ciklusa.
26) Koji su razliฤiti naฤini predstavljanja povezanih lista u memoriji?
Povezane liste mogu se predstaviti u tri glavna naฤina:
| Vrsta reprezentacije | Description | Primjer upotrebe |
|---|---|---|
| Dinamiฤki ฤvorovi | Svaki ฤvor dinamiฤki dodijeljen i povezan | C, C++ |
| Statiฤka reprezentacija niza | Koristi indekse polja umjesto pokazivaฤa | Ugraฤeni sustavi |
| Povezani objekti | Objektno orijentirana reprezentacija s klasama | Java, Python |
Svaki pristup odgovara razliฤitim okruลพenjima - na primjer, liste temeljene na nizovima koriste se kada je manipulacija pokazivaฤem ograniฤena.
27) Kako moลพete pronaฤi duljinu povezane liste (iterativne i rekurzivne)?
Iterativni pristup:
int getLength(ListNode head) {
int count = 0;
while (head != null) {
count++;
head = head.next;
}
return count;
}
Rekurzivni pristup:
int getLength(ListNode head) {
if (head == null) return 0;
return 1 + getLength(head.next);
}
Oba pristupa imaju O (n) vremenska sloลพenost; rekurzija dodaje O (n) prostor optereฤen zbog steka poziva.
28) Objasnite koncept kruลพnih dvostruko povezanih lista s primjerom.
U kruลพna dvostruko povezana lista, svaki ฤvor ima dvije veze - jednu prema sljedeฤem i jednu prema prethodnom - a posljednjeg ฤvora next pokazuje na glavu, dok je glava prev ukazuje na posljednji ฤvor.
Primjeri sluฤajeva upotrebe:
- Operativni sustavi u stvarnom vremenu (kruลพno rasporeฤivanje)
- Petlja glazbene playliste
- Navigacija izmeฤu kartica ili slajdova
Prednosti:
- Dvosmjerni obilazak.
- Nema nultih referenci.
- Uฤinkovito umetanje i brisanje.
29) Kako se briลกu alternativni ฤvorovi u povezanoj listi?
Algoritam:
- Poฤnite od glave.
- Izbriลกite svaki drugi ฤvor prilagoฤavanjem pokazivaฤa.
- Nastavite dok se popis ne zavrลกi.
Primjer:
Input: 1 โ 2 โ 3 โ 4 โ 5 Output: 1 โ 3 โ 5
Sloลพenost:
- Vrijeme: O(n)
- Prostor: O(1)
Ovo provjerava razumijevanje sigurnosti prolaska pokazivaฤa i brisanja.
30) Kako moลพete pronaฤi n-ti ฤvor s poฤetka i s kraja povezane liste?
S poฤetka: Prolazite kroz listu dok broj ne bude = n.
Od kraja: Koristite dva pokazivaฤa.
- Pomakni prvi pokazivaฤ n koraka naprijed.
- Pomiฤite oba istovremeno dok prvi ne dosegne nulu.
- Drugi pokazivaฤ sada pokazuje na n-ti ฤvor od kraja.
Sloลพenost vremena: O (n)
Sloลพenost prostora: O (1)
Ovaj pristup izbjegava zasebno izraฤunavanje duljine, ลกto poboljลกava uฤinkovitost.
31) Kako se mijenja redoslijed povezane liste?
Problem: S obzirom na popis L0 โ L1 โ โฆ โ Ln-1 โ Ln, promijenite redoslijed kao L0 โ Ln โ L1 โ Ln-1 โ L2 โ Ln-2 โ โฆ
Koraci:
- Pronaฤite sredinu popisa.
- Revprije druge polovice.
- Spojite dvije polovice naizmjeniฤno.
Primjer:
Input: 1 โ 2 โ 3 โ 4 โ 5 Output: 1 โ 5 โ 2 โ 4 โ 3
Sloลพenost: O(n) vremena, O(1) prostora.
Ovo testira viลกe operacija povezanih lista u jednom pitanju.
32) Kako particionirate povezanu listu oko zadane vrijednosti x?
Cilj:
Preuredi ฤvorove tako da svi ฤvorovi manji od x dolaze prije ฤvorova veฤih ili jednakih od x.
Pristup:
- Odrลพavajte dvije laลพne liste:
beforeiafter. - Proฤite kroz izvornu listu i dodajte ฤvorove odgovarajuฤim listama.
- Spojite ih na kraju.
Primjer:
Input: 3 โ 5 โ 8 โ 5 โ 10 โ 2 โ 1, x = 5 Output: 3 โ 2 โ 1 โ 5 โ 8 โ 5 โ 10
Ovo se ฤesto traลพi za procjenu sposobnosti preureฤenja podataka.
33) Kako sortirate povezanu listu?
Buduฤi da povezane liste ne podrลพavaju sluฤajni pristup, Spoji sortiranje je najbolji izbor.
Koraci:
- Podijelite popis na polovice koristeฤi spore/brze pokazivaฤe.
- Rekurzivno sortiraj svaku polovicu.
- Spoji sortirane polovice.
Prednosti:
- O(n log n) vremena.
- O(1) dodatnog prostora (za iterativnu verziju).
Za razliku od nizova, QuickSort je neuฤinkovit za povezane liste zbog sloลพenosti preureฤenja pokazivaฤa.
34) Koja je razlika izmeฤu jednostruko, dvostruko i kruลพno povezanih lista?
| svojstvo | Pojedinaฤno | Dvostruko | Kruลพni |
|---|---|---|---|
| linkovi | Jedan (sljedeฤi) | Dva (prethodna i sljedeฤa) | Posljednji ฤvor spaja se s glavom |
| obuhvaฤanje | Samo naprijed | Naprijed i nazad | Moguฤe beskonaฤno kretanje |
| Umetanje/brisanje | Umjereno | Lakลกe s obje strane | Obrada posebnih sluฤajeva |
| Koristite sluฤaj | Stog, Red ฤekanja | Poniลกti operacije | Kruลพno rasporeฤivanje |
Ovo pitanje usporedbe ฤesto se ฤini kao provjera konceptualne jasnoฤe.
35) Kako se pronalazi presjek dviju kruลพnih povezanih lista?
Ovo je proลกirenje problema raskriลพja.
Algoritam:
- Otkrij ima li svaka lista petlju.
- Ako su oba acikliฤka โ koristite standardni algoritam presjeka.
- Ako su oba cikliฤka โ pronaฤite poฤetak petlje za svaku i provjerite jesu li isti ili povezani.
Ovaj problem kombinira detekcija ciklusa i logika presjeka, testiranje viลกekonceptualnog zakljuฤivanja.
36) Objasnite kako umetnuti ฤvor u sortiranu povezanu listu.
Koraci:
- Stvorite novi ฤvor s danom vrijednoลกฤu.
- Pomiฤite se dok ne pronaฤete ispravan poloลพaj.
- prilagoditi
nextpokazivaฤe u skladu s tim.
Primjer:
Input: 1 โ 3 โ 5 โ 7, Insert 4 Output: 1 โ 3 โ 4 โ 5 โ 7
Ovo je osnovni manipulacijski problem za testiranje razumijevanja podeลกavanja pokazivaฤa.
37) Kako podijeliti povezanu listu na dvije polovice?
Algoritam:
- Koristite metodu sporog i brzog pokazivaฤa.
- Kada
fastdoฤe do kraja,slowbit ฤe na sredini. - Podijeli se na tom ฤvoru.
Primjer:
Input: 1 โ 2 โ 3 โ 4 โ 5 Output: 1 โ 2 โ 3 and 4 โ 5
Ova operacija je ฤesto prvi korak sortiranja spajanjem povezanih lista.
38) Kako pronaฤi posljednju pojavu vrijednosti u povezanoj listi?
Kreฤite se kroz popis prateฤi posljednji ฤvor u kojem se nalazi ciljna vrijednost.
Pseudokod:
ListNode findLastOccurrence(ListNode head, int val) {
ListNode result = null;
while (head != null) {
if (head.val == val) result = head;
head = head.next;
}
return result;
}
Sloลพenost: O (n)
Ovo provjerava razumijevanje linearnog obilaska i provjere uvjeta.
39) Kako moลพete ukloniti sva pojavljivanja zadanog kljuฤa iz povezane liste?
Algoritam:
- Prvo obradi glavne ฤvorove ako sadrลพe ciljni kljuฤ.
- Zatim proฤite kroz i izbriลกite sljedeฤe ฤvorove koji sadrลพe kljuฤ.
Primjer:
Input: 1 โ 2 โ 6 โ 3 โ 4 โ 5 โ 6, Key = 6 Output: 1 โ 2 โ 3 โ 4 โ 5
Sloลพenost: O (n)
Ovo pokazuje poznavanje rubnih sluฤajeva (posebno brisanja glava).
40) Koje su kljuฤne razlike izmeฤu podatkovnih struktura stoga i povezanih popisa?
| svojstvo | Stog | Povezani popis |
|---|---|---|
| Vrsta pristupa | LIFO (zadnji uลกao, prvi izaลกao) | Sekvencijalno |
| Izvrลกenje | Niz ili povezana lista | Temeljeno na ฤvorovima |
| Operama | Guranje/Popucavanje | Umetni/Izbriลกi/Pomakni |
| Fleksibilnost | Ograniฤeni pristup | Fleksibilan pristup |
| Koristite sluฤaj | Upravljanje pozivima funkcija | Dinamiฤko rukovanje podacima |
Stog se moลพe implementirati koriลกtenjem povezane liste, ali se razlikuju po konceptu - stog ima ograniฤen pristup, dok je povezana lista struktura opฤe namjene.
๐ Popis najpopularnijih pitanja za intervju s realnim scenarijima i strateลกkim odgovorima
1) ล to je povezana lista i po ฤemu se razlikuje od niza?
Oฤekivano od kandidata: Anketar ลพeli procijeniti vaลกe razumijevanje osnovnih struktura podataka i vaลกu sposobnost usporeฤivanja kompromisa.
Primjer odgovora: Povezana lista je linearna struktura podataka u kojoj su elementi, nazvani ฤvorovi, povezani pokazivaฤima. Svaki ฤvor sadrลพi podatke i referencu na sljedeฤi ฤvor. Za razliku od nizova, povezane liste ne zahtijevaju susjednu memoriju i omoguฤuju dinamiฤku promjenu veliฤine, ali imaju sporije vrijeme pristupa jer elementi nisu indeksirani.
2) Kada biste u stvarnoj primjeni odabrali povezanu listu umjesto niza?
Oฤekivano od kandidata: Oni procjenjuju vaลกu praktiฤnu prosudbu u odabiru odgovarajuฤih struktura podataka.
Primjer odgovora: Odabrao bih povezanu listu kada su potrebna ฤesta umetanja i brisanja, posebno u sredini skupa podataka. U prethodnoj ulozi radio sam na znaฤajki rasporeฤivanja zadataka gdje su se zadaci ฤesto dodavali i uklanjali, a povezana lista pruลพala je bolje performanse od polja.
3) Moลพete li objasniti razliku izmeฤu jednostruko povezanih i dvostruko povezanih lista?
Oฤekivano od kandidata: Ispitivaฤ ลพeli provjeriti vaลกu konceptualnu jasnoฤu i sposobnost jasnog objaลกnjavanja tehniฤkih razlika.
Primjer odgovora: Jednostruko povezana lista ima ฤvorove koji pokazuju samo na sljedeฤi ฤvor, dok dvostruko povezana lista ima ฤvorove koji pokazuju i na sljedeฤi i na prethodni ฤvor. Dvostruko povezane liste omoguฤuju lakลกe kretanje unatrag, ali zahtijevaju viลกe memorije zbog dodatnog pokazivaฤa.
4) Kako biste otkrili ciklus u povezanoj listi?
Oฤekivano od kandidata: Ovo testira vaลกe vjeลกtine rjeลกavanja problema i poznavanje uobiฤajenih algoritamskih obrazaca.
Primjer odgovora: Uobiฤajeni pristup je koriลกtenje dvaju pokazivaฤa koji se kreฤu razliฤitim brzinama, ฤesto nazvan tehnikom sporog i brzog pokazivaฤa. Ako postoji ciklus, dva pokazivaฤa ฤe se na kraju susresti. Na prethodnoj poziciji koristio sam ovaj pristup kako bih sprijeฤio beskonaฤne petlje u cjevovodu obrade podataka.
5) Koje se uobiฤajene operacije izvode na povezanim listama?
Oฤekivano od kandidata: Anketar ลพeli vidjeti razumijete li standardne operacije i njihove implikacije.
Primjer odgovora: Uobiฤajene operacije ukljuฤuju umetanje, brisanje, prolazak kroz popis, pretraลพivanje i preokretanje. Svaka operacija ima razliฤitu vremensku sloลพenost ovisno o tome gdje se izvodi, ลกto je vaลพno pri dizajniranju uฤinkovitih sustava.
6) Kako se rjeลกava umetanje ฤvora u sredinu povezane liste?
Oฤekivano od kandidata: Provjeravaju vaลกe razumijevanje manipulacije pokazivaฤem i paลพnju prema detaljima.
Primjer odgovora: Za umetanje ฤvora u sredinu, prvo se kreฤem kroz popis kako bih pronaลกao ciljni poloลพaj, a zatim prilagoฤavam pokazivaฤe tako da novi ฤvor pokazuje na sljedeฤi ฤvor, a prethodni ฤvor na novi ฤvor. Paลพljivo aลพuriranje pokazivaฤa kljuฤno je kako bi se izbjeglo naruลกavanje popisa.
7) Opiลกite situaciju u kojoj je povezana lista uzrokovala probleme s performansama i kako ste je rijeลกili.
Oฤekivano od kandidata: Ovo bihevioralno pitanje procjenjuje vaลกu sposobnost promiลกljanja i optimizacije.
Primjer odgovora: Na mom prethodnom poslu, povezana lista se koristila za ฤeste operacije pretraลพivanja, ลกto je dovodilo do sporih performansi. Utvrdio sam problem i preporuฤio prelazak na strukturu temeljenu na hash-u, ลกto znaฤajno poboljลกava vrijeme pretraลพivanja.
8) Kako biste preokrenuli povezanu listu?
Oฤekivano od kandidata: Ispitivaฤ provjerava vaลกe logiฤko razmiลกljanje i razumijevanje iterativnih ili rekurzivnih pristupa.
Primjer odgovora: Povezanu listu bih preokrenuo iteracijom kroz nju i promjenom sljedeฤeg pokazivaฤa svakog ฤvora da pokazuje na prethodni ฤvor. Ovaj se proces nastavlja sve dok se svi pokazivaฤi ne preokrenu i zaglavlje ne aลพurira.
9) Koje su prednosti i nedostaci koriลกtenja povezanih popisa?
Oฤekivano od kandidata: ลฝele uravnoteลพenu perspektivu i svijest o kompromisima.
Primjer odgovora: Prednosti ukljuฤuju dinamiฤku veliฤinu i uฤinkovito umetanje i brisanje. Nedostaci ukljuฤuju veฤu upotrebu memorije i sporije vrijeme pristupa u usporedbi s nizovima. U mojoj posljednjoj ulozi, razumijevanje ovih kompromisa pomoglo je u odabiru prave strukture za razliฤite komponente.
10) Kako odluฤujete koju vrstu povezane liste koristiti u dizajnu sustava?
Oฤekivano od kandidata: Ovo situacijsko pitanje procjenjuje donoลกenje odluka u arhitektonskim kontekstima.
Primjer odgovora: Uzimam u obzir ฤimbenike kao ลกto su potrebe za prolaskom kroz popis, memorijska ograniฤenja i uฤestalost operacija. Na primjer, ako je potreban prolazak unatrag, dvostruko povezana lista je prikladnija, dok je jednostruko povezana lista dovoljna za jednostavnije, memorijski uฤinkovite implementacije.
