Toshkent axborot texnologiyalari universiteti



Yüklə 322,5 Kb.
tarix27.02.2022
ölçüsü322,5 Kb.
#53195
MT va A lab-3 14-variant




O`ZBEKISTON RESPUBLIKASI AXBOROT
TEXNOLOGIYALARI VA
KOMMUNIKATSIYALARINI RIVOJLANTIRISH
VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI
UNIVERSITETI

310-20-guruh talabasi
Xajiqurbonov Azizbekning
Ma’lumotlar tuzilmasi va Algoritmlash fanidan bajargan

LABORATORIYA ISHI


Bajardi : Xajiqurbonov Azizbek

Nazorat savollari



  1. Dinamik ma’lumotlar tuzilmasi nima va uning statik tuzilmalardan afzalligini tushuntiring?

  2. Ro’yhat tuzilmasi nima va ro’yhatning qanday turlarini bilasiz?

  3. Ro’hat tuzilmasini dasturda ifodalash qanday amalga oshiriladi?

  4. Ro’hat tuzilmasi ustida amal bajarish algoritmlarini tushuntiring

  5. Ikki bog’lamli ro’yhat nima va uni bir bog’lamli ro’hatdan afzalligi va kamchiligini tushuntiring.

Javoblar:

1. Statik ma’lumotlar tuzilmasi vaqt o‘tishi bilan o‘z o‘lchamini o‘zgartirmaydi. Biz har doim dastur kodidagi statik ma’lumotlar tuzilmasiga qarab ularning o‘lchamini bilishimiz mumkin. Bunday ma’lumotlarga teskari ravishda dinamik ma’lumotlar tuzilmasi mavjud bo‘lib, bunda dastur bajarilishi davomida dinamik ma’lumotlar tuzilmasi o‘lchamini o‘zgartirishi mumkin. Dinamik ma’lumotlar tuzilmasi – bu qandaydir bir qonuniyatga asoslanib shakllangan, lekin elementlari soni, o‘zaro joylashuvi va o‘zaro aloqasi dastur bajarilishi davomida shu qonuniyat asosida dinamik o‘zgaruvchan bo‘lgan ma’lumotlar tuzilmasidir.



  1. Chiziqli bir tomonlama yo‘nalgan ro‘yhatlar

3.

  1. Bir bog‘lamli ro‘yhat boshiga element qo‘yish

  2. Bir bog‘lamli ro‘yhat boshidan elementni o‘chirish

  3. Elementni ro‘yhatga qo‘shish

  4. Bir bog‘lamli ro‘yhatdan elementni o‘chirish

4 . Algoritm

  1. Ekranga menyu chiqaramiz: 1 - element qo’shish; 2 - ro’yhatni ko’rish; 3 - ro’yhat maksimalini topish; 0 - chiqish; tanlash uchun tanla o’zgaruvchisiga qiymat so’raymiz. 2-qadamga o’tish.

  2. Agar tanla=1 bo’lsa, 3-qadamga, 2 ga teng bo’lsa, 4-qadamga, 3 tanlansa, 6-qadamga o’tish, 0 tanlansa dasturni yakunlash.

  3. Navbatdagi elementni yaratish p; (p ning info maydoniga qiymat so’rab olib yozish va ptr maydoniga NULL yozish) Agar ro’yhat boshi ko’rsatkichi lst=NULL bo’lsa, lst=p va last=p; aks holda last – ro’yhat oxirgi elementi ptr maydoniga p ni yozib, p elementni last qilib belgilaymiz. 1-qadamga o’tamiz.

  4. Agar lst NULL ga teng bo’lsa, ro’yhat bo’shligini ekranga chiqarib, 1-qadamga o’tish. Aks holda, p=lst va 5-qadamga o’tish.

  5. Agar p ning ptr maydoni NULL bo’lmasa, p ning info maydonini ekranga chiqaramiz va keyingi elementga o’tamiz, ya’ni p=p->ptr, 5-qadamga o’tamiz, aks holda, 1-qadamga o’tamiz.

  6. max=lst->info, ya’ni max o’zgaruvchisiga ro’yhat 1-elementi info maydoni qiymatini o’zlashtiramiz. p=lst va 7-qadamga o’tish.

  7. Agar p NULL ga teng bo’lmasa, 8-qadamga o’tamiz, aks holda max ni ekranga chiqaramiz va 1-qadamga o’tamiz.

Agar max< p->info bo’lsa, max=p->info. Keyingi elementga o’tamiz, ya’ni p=p->ptr. 7-qadamga o’tamiz.

Topshiriq:

14. Sportchi familiyalaridan tashkil topgan ikkita halqasimon ro’yhat berilgan. Qura tashlash amalga oshirilsin. Birinchi guruhdagi har n-inchi sportchi, ikkinchi guruhdagi har m-inchi sportchi bilan raqib bo’lsin.

#include

using namespace std;

struct Node {

string data;

Node *next;

};

class LinkedList {



private:

Node *head, *tail;

int _size;

public:


LinkedList() {

head = NULL;

tail = NULL;

_size = 0;

}

void push_back(string data) {



Node *tmp = new Node;

tmp->data = data;

tmp->next = NULL;

if (head == NULL) {

head = tmp;

tail = tmp;

} else {

tail->next = tmp;

tail = tmp;

}


_size++;

}

void push_front(string data) {



Node *tmp = new Node;

tmp->data = data;

tmp->next = head;

head = tmp;

_size++;

}

void pop(int pos) {



Node *curr = new Node;

Node *prev = new Node;

curr = head;

for (int i=0; i




prev = curr;

curr = curr->next;

}

prev->next = curr->next;



_size--;

}

string peek(int pos) {



Node *curr = new Node;

Node *prev = new Node;

curr = head;

int k=0;


for (int i=0; i


prev = curr;

curr = curr->next;

}return curr->data;

}

int size() {



return _size;

}

};



int main() {

srand (time(0));

int n;

cout<<"Sportchilar sonini kiriting:\n";



cin>>n;

LinkedList surname,sovga;

cout<<"\n1-ruyhat ishtirokchilar familiyalarni kiriting: \n";

for(int i=0;i

string x;

cin>>x;


surname.push_back(x);

}

cout<<"\n1-ruyhat ishtirokchilar familiyalarni kiriting:\n";



for(int i=0; i

string z;

cin>>z;

sovga.push_back(z);

}

cout<<"\n* * * Raqiblar: * * *\n";



for(int i=0;i

{int k=rand()%n;

cout<

int j=rand()%n;

cout<<" < -- > "<

}


return 0;

}


Yüklə 322,5 Kb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin