Delete Operation - Singly Linked List
Last updated
Was this helpful?
Last updated
Was this helpful?
Agar linked listda mavjud bo'lgan cur
nodeni o'chirmoqchi bo'lsak, buni ikki bosqichqa qilishimiz mumkin.
cur
nodedan oldingi prev
node va keyingi next
nodelarni topamiz.
prev
nodeni cur
nodedan keyingi nodega bog'laymiz.
Birinchi qadamda, prev
va next
nodelarni topishimiz kerak. next
ni cur
ning havolasidan foydalanib topish oson. Lekin biz prev
ni topish uchun headdan boshlab o'tib chiqishimiz kerak, uzunligi N ga teng bo'lgan linked listda o'rtacha O(N)
vaqt oladi. Shu sababli nodeni o'chirish vaqt murakkabligi O(N)
bo'ladi.
Keling yuqoridagi singly linked listdan node-6 ni o'chirishga harakat qilib ko'ramiz.
head node dan boshlab oldingi prev
node node-23 ni topganimizcha linked listni o'tib chiqamiz.
prev
nodeni next
nodega bog'laymiz.
node-6 endi bizning singly linked listimizda emas.
Agar birinchi nodeni o'chirmoqchi bo'lsak bu biroz boshqacha bo'ladi.
Avval ta'kidlaganimizdek, linked listni ifodalash uchun bosh node sifatida head node
dan foydalanamiz, Bosh nodeimiz pastda misoldagi qora node-23.
Agar birinchi nodeni o'chirmoqchi bo'lsak, shunchaki keyingi nodeni head node
ga biriktiramiz. Ya'ni o'chirishdan keyin node-6 head node bo'ladi.
Linked list head nodedan boshlanad, shuning uchun endi node-23 yo'q.
Note
Oxirgi tugunni o'chirish haqida nima deyish mumkin? Shunga oʻxshash strategiyadan foydalanishimiz mumkinmi?
© Leetcode