Ikkala bog'langan va yakka bog'langan
Ikki marta bog'langan ro'yxatlar bitta tugun uchun ko'proq joy talab qiladi (agar foydalanmasa) XOR-ulanish ), va ularning boshlang'ich operatsiyalari qimmatroq; ammo ularni boshqarish osonroq, chunki ular ro'yxatga har ikki yo'nalishda ham tezkor va oson ketma-ket kirish imkoniyatini beradi. Ikki marta bog'langan ro'yxatda faqat shu tugunning manzili berilgan doimiy sonli operatsiyalarga tugunni qo'shish yoki o'chirish mumkin. Alohida bog'langan ro'yxatda xuddi shunday qilish uchun quyidagilar bo'lishi kerak ko'rsatgich manzili yoki butun ro'yxat uchun dastak bo'lgan tugunga (birinchi tugun bo'lsa) yoki havoladagi maydonga oldingi tugun. Ba'zi algoritmlar ikkala yo'nalishda ham kirishni talab qiladi. Boshqa tomondan, ikki tomonlama bog'langan ro'yxatlar quyruqni taqsimlashga imkon bermaydi va ulardan foydalanish mumkin emas doimiy ma'lumotlar tuzilmalari.
Chiziqli bog'langan ro'yxatlar
Bizning tugun ma'lumotlari tuzilmasi ikkita maydonga ega bo'ladi. Shuningdek, biz o'zgaruvchini saqlaymiz birinchi tugun har doim ro'yxatdagi birinchi tugunga ishora qiladi yoki bekor bo'sh ro'yxat uchun.
Yozuv Tugun{ma'lumotlar; // Ma'lumotlar tugunda saqlanadi Tugun Keyingisi // A ma'lumotnoma[2] keyingi tugunga, oxirgi tugun uchun null}
Yozuv Ro'yxat{ Tugun birinchi tugun // ro'yxatning birinchi tuguniga ishora qiladi; bo'sh ro'yxat uchun null}
Alohida bog'langan ro'yxatning o'tishi oddiy, birinchi tugundan boshlanib, har biriga amal qilinadi Keyingisi oxirigacha havola:
tugun: = list.firstNodeesa tugun null emas (node.data bilan biror narsa qiling) tugun: = tugun.next
Quyidagi kod bitta bog'langan ro'yxatdagi mavjud tugundan keyin tugunni qo'shadi. Diagrammada uning qanday ishlashi ko'rsatilgan. Mavjud tugundan oldin tugunni kiritish to'g'ridan-to'g'ri amalga oshirilmaydi; Buning o'rniga, avvalgi tugunni kuzatib borish va undan keyin tugunni kiritish kerak.
Do'stlaringiz bilan baham: |