Delete Operation - Singly Linked List
Agar linked listda mavjud bo'lgan cur nodeni o'chirmoqchi bo'lsak, buni ikki bosqichqa qilishimiz mumkin.
curnodedan oldingiprevnode va keyinginextnodelarni topamiz.

prevnodenicurnodedan keyingi nodega bog'laymiz.

Birinchi qadamda, prev va next nodelarni topishimiz kerak. next ni curning 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
prevnode node-23 ni topganimizcha linked listni o'tib chiqamiz.prevnodeninextnodega 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 nodedan foydalanamiz, Bosh nodeimiz pastda misoldagi qora node-23.

Agar birinchi nodeni o'chirmoqchi bo'lsak, shunchaki keyingi nodeni head nodega 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?