Chiziqli va chiziqsiz ma‘lumotlar tuzilmasi:
Ma’lumotlar tuzilmasi (data structures) — bu ma’lumotlarni samarali o’qish va
o’zgartirish imkonini beruvchi, ma’lumotlarni saqlash va boshqarishning bir
formatga solingan shaklidir. Eng sodda ma’lumotlar tuzilmasiga misol qilib massiv
(array)ni ko’rsatishimiz mumkin.
Data structures primitiv va non-primitiv turga ajratiladi.
Primitiv turga Integer, Boolean, Text, Character kiradi.
Non-primitiv turning o’zi ikkiga bo’linadi:
– Chiziqli: Array, Linked List, Stack, Queues.
– Chiziqsiz: Trees, Graphs.
Array
Array bu ma’lumotlar jamlanmasi bo’lib, dasturlash tillariga ko’ra
bir xil tipdagi
yoki har xil tipli; o’lchami oldindan aniqlangan yoki aniqlanmagan bo’ladi. Array
elementlari xotirada ketma-ket joylashgani uchun uni o’qib olish tez
amalga
oshadi.
Linked list
Linked list — bu tugunlardan ya’ni Node’lardan iborat chiziqli tuzilma bo’lib, har
bir node o’zida elementni va keyingi (ba’zan oldingi ham)
node adresini
ko’rsatuvchi ko’rsatkichni (pointerni) saqlaydi.
Linked list’ning ikki ko’rinishi bor:
•
Unidirectional – Ohirgi elementdan tashqari har bir node’da
faqat keyingi node
uchun pointer bo’ladi. Ya’ni bir taraflama bog’langan bo’ladi.
•
Bidirectional (yoki doubly linked list) – Boshi va ohirgi elementdan tashqari har
bir node’da o’zidan oldingi va o’zidan keyingi node uchun pointer bo’ladi. Ikki
taraflama bog’langan bo’ladi.
Queue amallari ham ikkita:
•
enqueue/add/put – arrayning ohiriga yangi element qo’shiladi
•
dequeue/delete/get – arrayning boshidagi elementni o’chiradi. O’chirilgan
elementni qaytaradi.
Shuningdek, peek – array boshidagi elementni o’chirmasdan ham qaytarish
funksiyasi qo’shilishi mumkin.
Queue’ga misol – hamma yerda
uchraydigan navbatlar
Tree – chiziqli bo’lmagan ma‘lumot tuzilmasi (data structure) bo’lib u
ma’lumotlarni ierarxik ko’rinishda tashkil qiladi. Masalan, oila shajarasini tasavvur
qiladigan bo’lsak, u ham
tree ma’lumot tuzilmasi hisoblanadi.
Tree aslida
node‘lar to’plami. Node’lar bir biriga tomonlari (
edges)
orqali
bog’langan. Demak har bir node o’zida qiymat (
value) hamda
child
node’larga
pointer bo’ladi. Har bir tree’da birinchi node
root deb ataladi.
Agar node bir yoki birnecha node’larga ulangan bo’lsa u node –
parent, unga
ulangan node’lar
children deyiladi. Bolasi yo’q node’lar barglar (
leaves) yoki
tashqi (
external) node, aks holda ichki (
internal) node deb nomlanadi. Bitta
parent’ga tutashgan node’lar
siblings deyiladi.
Yuqoridagi misolda:
•
A – B
va C ga parent
•
B – A uchun child
•
B va C – siblings
•
E, F, H, I va J – leaves
Node’ning chuqurligi (
depth) – node’ning root’gacha bo’lgan yo’lining uzunligi
hisoblanadi. Yuqoridagi misolimizda I node’ning chuqurligi 3 ga teng (I ->
G -> C