LinkedList. Kirish.

LinkedList. Kirish.

Bugungi maqola LinkedListga bag’ishlanadi. LinkedList massiv kabi chiziqli ma’lumotlar strukturasi(MS) bo’lib, lekin undagi elementlarning to’liq-kesiq o’rni (indeks) mavjud emas. Elementlar o’zara ko’rsatkich(yo’llanma) yoki «link»lar bilan bo’glanadi.

So’zni Linkedlist tashkil etuvchisi sodda MS «node»dan boshlaymiz. O’zbekchasiga xalqa deb olishimiz mumkin. (Aslida, terminlarni to’g’ridan to’g’ri o’zbekchaga tarjima qilish tarafdori emasman.) Quyidagi rasmda xalqa ifodalangan.

linkedlist kirish 6607546dda116

Ushbu MS ko’plab boshqa katta MS lar uchun qurilishi materiali vazifasini bajarib beradi. Rasmda ko’rinib turganidek, xalqa o’zida qandaydur obyektni va keyingi xalqaga yo’llanmani saqlaydi. Quyidagi kod parchasida
node ifodalangan.

/*LinkedList uchun node(xalqa).
   T - bu umumiiy tip. */
    public class LinkedListNode
    {
        /// T tipdagi qiymat bilan node uchun yangi obyekt yaratadi.
        public LinkedListNode(T value)
        {
            Value = value;
        }
        /// nodening qiymati
        public T Value { get; set; }
        /// keyingi nodega yo'llanma.
        public LinkedListNode Next { get; set; }
    }

Xalqada saqlanayotgan elementlarning tipi har doim bir bo’lishi lozim. Bir necha xalqalarni birlashtirgan holda zanjirni hosil qilamiz. Demak, zanjir bu bir dan ortiq xalqalarning to’plami bo’lib, ular o’zaro faqat birgina
link bilan bog’lanadi(Keyingi maqolalarimizda bog’lanishlar soni birdan ortiq bo’lgan holatni ham e’tiborga olib o’tamiz.). Quyidagi rasmda zanjirga misol keltirilgan.

linkedlist kirish 6607546e42da3

Zanjirning birinchi elementi
Bosh va oxirgi elementi mos ravishda Dum deb ataladi. Zanjirning har bir xalqasi o’zidan keyingi xalqaga link yordamida bo’glangan. [A,B,C,D,E] bular xalqalarda saqlanayotgan obyektlardir. Bu zanjir LinkedList bo’lishi uchun bir necha qo’chimcha metodlarni qo’shishimiz lozim. Quyidagi kodda LinkedList uchun interface berilgan.

/*
     *  LinkedList uchun interface
     */
    public interface ILinkedList
    {
          /*LinkedList ni barcha nodelardan tozalaydi*/
        void Clear();
        /*Obyektni list boshiga qo'shadi*/
        void AddFirst(T value);
        /*Obyektni list oxiriga qo'shadi*/
        void AddLast(T value);
        /*Ma'lum bir xalqadan oldin yangi xalqa qo'shadi*/
        void InsertBefore(LinkedListNode node, T value);
        /*Ma'lum bir xalqaga yangi xalqa qo'shadi*/
        void InsertAfter(LinkedListNode node, T value);
        /*List boshidagi xalqani o'chiradi va qiymatini qaytaradi*/
        T RemoveFirst();
        /*List oxiridagi xalqani o'chiradi va qiymatini qaytaradi*/
        T RemoveLast();
        /*Berilgan nodeni LinkedListdan o'chiradi.*/
        T Remove(LinkedListNode node);
        /*Qiymat bo'yicha nodeni topadi.*/
        LinkedListNode Find(T value);
    }

Yuqorida berilgan interfacedagi metodlarga qisqacha to’xtalib o’tamiz.
T bu .Net tillar oilasining qulayliklaridan biri.
Ushbu
ushbu link orqali yaqindan tanishingiz mumkin. Qisqacha ma’nosi, class ichidagi metodlarni parameterning tipiga bo’gliq bo’lmagan vaziyatda, tipni umumiy ko’rinishda e’lon qilish.

Metod Tavsifi
Clear()

LinkedListni barcha nodelardan tozalaydi. Bu metod chaqirilgandan keyin LinkedListimiz yana bo’sh bo’ladi.

AddFirst(T value)

LinkedListning
Boshini boshqa node bilan almashtiradi. Masalan, aytaylik F obyektni shu metodni yordami LinkedListga qo’shaylik, natijada bosh Fga teng bo’ladi.

InsertBefore(LinkedListNode node, T value)

LinkedListdagi
«node»dan oldingi o’ringa yangi «value» qiymatli node qo’shadi. Masalan: [A,B,C,D] ga B dan oldin «F» ni qo’shsak, natija [A,F,B,C,D] bo’ladi.

InsertAfter(LinkedListNode node, T value)

LinkedListdagi
«node»dan keyingi o’ringa yangi «value» qiymatli node qo’shadi. Masalan: [A,B,C,D] ga B dan keyin «F» ni qo’shsak, natija [A,B,F,C,D] bo’ladi. InsertBefore(LinkedListNode node, T value) ga teskari metod.

AddLast(T value)

AddFirst(T value) ga teskari simmetrik metod. Ya’ni F qo’shilgan holatda, Dum F ga teng bo’ladi.

Remove(LinkedListNode node)

LinkedListdan berilgan xalqani o’chiradi va o’chirilgan xalqa qiymatini qaytaradi.

RemoveFirst()

LinkedListning
boshini o’chiradi va o’chirilgan xalqa qiymatini qaytaradi.

RemoveLast()

LinkedListning
dumini o’chiradi va o’chirilgan xalqa qiymatini qaytaradi.

Find(T value)

LinkedListdan berilgan qiymat bo’yicha xalqani topadi.

Keyingi maqolamiz ushbu interfacening implementatsiya haqida bo’ladi.

Manba:

Umumiy Dasturlash
LinkedList. Kirish.