Delete Operation - Singly Linked List
Agar linked listda mavjud bo'lgan cur
nodeni o'chirmoqchi bo'lsak, buni ikki bosqichqa qilishimiz mumkin.
cur
nodedan oldingiprev
node va keyinginext
nodelarni topamiz.

prev
nodenicur
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.
Misol

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
nodeninext
nodega bog'laymiz.

node-6 endi bizning singly linked listimizda emas.
Birinchi Nodeni o'chirish
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 link
Last updated
Was this helpful?