O‘ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL‑XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
"Malumotlar tuzilmasi va algoritmlar" fanidan
ORALIQ NAZORAT
Бажарди: 711-19 гурух талабаси
No'monjonov Samandar
Variant №32
1. Navbat tuzilmasi va uni dasturda ro’yxat ko`rinishida ifodalash.
2. Chiziqli bir bog’lamli ro’yxatni dasturda e’lon qilinishi, hosil qilish dasturi.
3. Vektorning oxirgi 2ta elementini o’chirish dasturini tuzing.
1. Navbat tuzilmasi va uni dasturda ro’yxat ko`rinishida ifodalash.
Queue (Navbat)
Queue ham Stack singari chiziqli ma’lumot tuzilmasi bo’lib, hayotdagi oddiy navbat singari ishlaydi. Shu sababli Stackdan farqli o’laroq Queueda eng oxirgi qo’shilgan elementga emas birinchi qo’shilgan elementga birinchi bo’lib “xizmat ko’rsatiladi”. Operatsiyalarni bunday ko’rinishda amalga oshirilishi esa FIFO (First In First Out) deb ataladi.
Queuega dasturiy misollar sifatida printerga narsalarni chop qilishni uzatishni, yoki protsessor operatsiyalarni amalga oshirish jarayonini misol keltirish mumkin (protsessor ishlashi har doim ham FIFO ga asoslanmaydi). Queueda biz ikkita tugun adresini xotirada saqlashimiz kerak bo’ladi. Navbat boshida turgan element uchun front, eng oxirgi element uchun rear yoki back.
Queue ustidagi asosiy amallar
Elementni navbat oxiriga qo’shish (Enqueue)
Elementni navbat boshidan chiqarib olish. Element o’chiriladi (Dequeue)
Navbat boshidagi elementni ko’rish. Element o’chirilmaydi (Peek)
Navbatni bo’shlikka tekshirish (isEmpty)
Bog’langan ro’yhatlada navbatni amalga oshirishda quyidagi funksiyalardan foydalanishimiz mumkin bo’ladi:
enQueue () Ushbu operatsiya orqadan keyin yangi tugunni qo'shadi va orqaga keyingi tugunga o'tadi.
deQueue () Ushbu operatsiya oldingi tugunni olib tashlaydi va oldinga keyingi tugunga o'tadi.
2. Chiziqli bir bog’lamli ro’yxatni dasturda e’lon qilinishi, hosil qilish dasturi.
Ro'yhatlar bilan ishlashda dasturda boshlang'ich elementni ko'rsatuvchi ko'rsatkich talab etiladi.
Bir bog'lamli ro'yhat deb elementlarning shunday tartiblangan ketma- ketligiga aytiladiki, har bir element 2 ta maydonga: informatsion maydon info va ko'rsatkich maydoni ptr ga ega bo'ladi.
Mazkur ko'rinishdagi ro'yhat elementi ko'rsatkichining o'ziga xosligi shundan iboratki, u faqatgina ro'yhatning navbatdagi (o'zidan keyin keluvchi) elementi adresini ko'rsatadi. Bir tomonlama yo'naltirilgan ro'yhatda eng so'ngi element ko'rsatkichi bo'sh, ya'ni NULL bo'ladi.
Lst – ro'yhat boshi ko'rsatkichi. U ro'yhatni yagona bir butun sifatida ifodalaydi. Ba'zan ro'yhat bo'sh bo'lishi ham mumkin, ya'ni ro'yhatda bitta ham element bo'lmasligi mumkin. Bu holda lst = NULL bo'ladi. Hozir chiziqli bir bog'lamli ro'yhat hosil qilish dasturini ko'rib chiqsak.
Buning uchun biz foydalanuvchi tomonidan yaratiladigan nostandart toifa yaratib olishimiz kerak.
class Node{
public://klass ma’lumotlariga tashqaridan bo‘ladigan murojaatga ruxsat berish
int info; // informatsion maydon
Node* next;// ko‘rsatkichli maydon
}; Bu yerda biz Node nomli toifa yaratdik va ro'yhatimiz butun sonlardan iborat. Endi ro'yhat elementlarini shu toifa orqali e‟lon qilsak bo'ladi, ya'ni
Node *lst = NULL;// ro‘yhat boshi ko‘rsatkichi
Node *last = NULL;// ro‘yhatga oxirgi kelib tushgan elementning ko‘rsatkichi
shu belgilashlar orqali ro'yhat hosil qilamiz.
Node * p = new Node;
int numb = -1;
cout<<"son kiriting: ";
cin>>numb;
p->info = numb;
p->next = NULL;
if (lst == NULL) {
lst = p;
last = p;
}
else{ last->next = p;
last = p; }
3. Vektorning oxirgi 2ta elementini o’chirish dasturini tuzing.
#include
using namespace std;
int main(){
vector v1{10, 20, 30, 40, 50};
//removing elemenets
v1.pop_back(); //removes 50
v1.pop_back(); //removes 40
// Vektor v1{10, 20, 30} ga aylanadi
}
Do'stlaringiz bilan baham: |