Berilganlarning sodda strukturalari: stek, navbat, ro‘yxat, deklar. Ma‟lumotlar strukturasi (ing. data structure) - bu hisoblashda turli xil bir tipli va (yoki) mantiqiy bogʻliq ma‘lumotlarni saqlash va qayta ishlashga imkon beradigan dastur birligi. Ma‘lumotlarni qoʻshish, izlash, oʻzgartirish va yoʻq qilish uchun ma‘lumotlar tarkibi uning interfeysini tashkil etadigan funksiyalar toʻplamini taqdim etadi. ―Ma‘lumotlar strukturasi‖ atamasining bir-biriga yaqin boʻlgan bir nechta ma‘nolarini anglatuvchi variantlari mavjud: - Ma‘lumotlarning abstrakt turi; - Ma‘lumotlarning ba‘zi bir abstrakt turlarini realizatsiya qilish; - Ma‘lumotlar tipining nusxasi, masalan, aniq bir roʻyxat; - Funksional dasturlash kontekstida oʻzgarishlarda davom etadigan noyob identifikator. Turli xil versiyalar mavjud boʻlishiga qaramay, u norasmiy ravishda ma‟lumotlar strukturasi deb nomlanadi. Ma‘lumotlar strutkturasi ma‘lumotlar turlari, havolalar va ular ustida amallar yordamida tanlangan dasturlash tilida shakllanadi. Turli xil ma‘lumotlar strukturalari turli xil ilovalar uchun mos keladi; ularning ba‘zilari ma‘lum vazifalar uchun tor ixtisoslashgan. Masalan, B-daraxtlar odatda ma‘lumotlar bazalarini yaratishga yaroqli boʻlsa, xesh jadvallar hamma joyda har xil lugʻatlarni yaratish uchun ishlatiladi, masalan, domen nomlarini kompyuterlarning internetmanzillariga xaritalash uchun. Dasturiy ta‘minotni ishlab chiqishda, amalga oshirishning murakkabligi va dasturlarning ishlash sifati ma‘lumotlar strukturalarning toʻgʻri tanlanishiga sezilarli darajada bogʻliqdir. Ushbu tushuncha dasturiy ta‘minot arxitekturasining boshida algoritmlar emas, ma‘lumotlar strukturalari joylashtirilgan rasmiy ishlab chiqish usullari va dasturlash tillarini keltirib chiqardi. Ushbu tillarning aksariyatida 29 ma‘lumotlar tuzilmalarini turli xil ilovalarda xavfsiz qayta ishlatishga imkon beradigan modullikning bir turi mavjud. Java, C# va C++ kabi obyektga yoʻnaltirilgan tillar ushbu yondashuvga misoldir. Koʻpgina klassik ma‘lumotlar strukturalari dasturlash tillarining standart kutubxonalarida taqdim etiladi yoki toʻgʻridan-toʻgʻri dasturlash tillariga kiritilgan. Masalan, xesh jadvali ma‘lumotlar tuzilishi Lua, Perl, Python, Ruby, Tcl va boshqa dasturlash tillariga kiritilgan boʻlib, C++ standart shablonlar kutubxonasida (STL) keng qoʻllaniladi. Koʻpgina ma‘lumotlar tuzilmalari uchun asosiy qurilish bloklari massivlar, yozuvlar (C tilida strukturalar va Paskaldagi yozuvlar), birlashmalar (C da union) va havolalardir. Funksional va imperativ dasturlashda ma‟lumotlar strukturalarini taqqoslash. Kamida ikkita sababga koʻra funksional tillar uchun ma‘lumotlar tuzilmalarini loyihalash imperativ tillarga qaraganda ancha qiyin: 1. Deyarli barcha ma‘lumotlar strukturalari aniq funksional uslubda ishlatilmaydigan oʻzlashtirishlardan ogʻir foydalanadilar; 2. Ma‘lumotlarning funksional strukturalari yanada moslashuvchan, shuning uchun imperativ dasturlashda eski versiya yoʻqoladi, shunchaki yangisi bilan almashtiriladi, funksional ravishda u avtomatik ravishda mavjud boʻlib qoladi. Boshqacha qilib aytganda, imperativ dasturlashda (agar siz dasturni jiddiy ravishda murakkablashtirishi mumkin boʻlgan maxsus choralarni koʻrmasangiz) ma‘lumotlar strukturalari vaqtinchalik (ing. ephemeral), funksional dasturlarda ular odatda doimiydir. Abstrakt ma‟lumotlar turi (ADT – Abstract Data Type) - bu ma‘lumotlar turlari uchun matematik model, bu yerda ma‘lumotlar turi xatti-harakatlari (semantikasi) bilan foydalanuvchi nuqtai nazaridan aniqlanadi, ya‘ni mumkin boʻlgan qiymatlar, ushbu ma‘lumotlar boʻyicha mumkin boʻlgan amallar turi va ushbu amallarning harakati. Rasmiy ravishda, ADTni komponentalar roʻyxati bilan belgilanadigan obyektlar toʻplami (bu obyektlarga taalluqli amallar va ularning xususiyatlari) deb ta‘riflash mumkin. Ushbu turdagi barcha ichki tuzilish dasturiy ta‘minot ishlab chiqaruvchisidan yashirilgan 30 holatda boʻladi - bu abstraksiyaning mohiyati. Abstrakt ma‘lumotlar turi, uning qiymatlari boʻyicha ishlash uchun tipning aniq bajarilishidan mustaqil funksiyalar toʻplamini belgilaydi. ADTlarning aniq tatbiq etilishi ma‘lumotlar strukturasi deb ataladi. Dasturlashda abstrakt ma‘lumotlar turlari odatda tegishli turdagi amallarni yashiradigan interfeyslar sifatida ifodalanadi. Dasturchilar mavhum ma‘lumotlar turlari bilan faqat oʻz interfeyslari orqali ishlaydi, chunki kelajakda dastur oʻzgarishi mumkin. Ushbu yondashuv obyektga yoʻnaltirilgan dasturlashda inkapsulyatsiya tamoyiliga mos keladi. Ushbu texnikaning kuchli tomoni - bu dasturni yashirish. Faqatgina interfeys tashqarida namoyish etilganidan soʻng, ma‘lumotlar tuzilishi ushbu interfeysni qoʻllab-quvvatlagan ekan, mavhum ma‘lumotlar turining berilgan tuzilishi bilan ishlaydigan barcha dasturlar ishlashni davom ettiradi. Ma‘lumotlar tuzilmalarini ishlab chiquvchilar tashqi interfeys va funksiyalar semantikasini oʻzgartirmasdan, algoritmlarni tezligi, ishonchliligi va ishlatilgan xotirasi jihatidan takomillashtirib, tatbiq etishni bosqichma-bosqich takomillashtirishga harakat qilishadi. Ma‘lumotlarning abstrakt turlari dasturiy mahsulotlarning modulliligiga erishishga va alohida modulning bir-birining oʻrnini bosadigan bir nechta muqobil dasturlariga ega boʻlishga imkon beradi. Tez-tez muammolarni hal qilish yoki dasturlarni optimallashtirish uchun ishlatiladigan ma‘lumotlar strukturasini tahlil qilamiz.