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
Dinamik ma’lumotlar tuzilmasi nima va uning statik tuzilmalardan afzalligini tushuntiring?
Ro’yhat tuzilmasi nima va ro’yhatning qanday turlarini bilasiz?
Ro’hat tuzilmasini dasturda ifodalash qanday amalga oshiriladi?
Ro’hat tuzilmasi ustida amal bajarish algoritmlarini tushuntiring
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.
Chiziqli bir tomonlama yo‘nalgan ro‘yhatlar
3.
Bir bog‘lamli ro‘yhat boshiga element qo‘yish
Bir bog‘lamli ro‘yhat boshidan elementni o‘chirish
Elementni ro‘yhatga qo‘shish
Bir bog‘lamli ro‘yhatdan elementni o‘chirish
4 . Algoritm
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.
Agar tanla=1 bo’lsa, 3-qadamga, 2 ga teng bo’lsa, 4-qadamga, 3 tanlansa, 6-qadamga o’tish, 0 tanlansa dasturni yakunlash.
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.
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.
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.
max=lst->info, ya’ni max o’zgaruvchisiga ro’yhat 1-elementi info maydoni qiymatini o’zlashtiramiz. p=lst va 7-qadamga o’tish.
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;
}
Dostları ilə paylaş: |