Tatu qarshi filiali kompyuter injiniringi



Yüklə 221,15 Kb.
tarix19.10.2023
ölçüsü221,15 Kb.
#157070
8 amaliy ish


MUHAMMAD AL-XORAZMIY NOMIDAGI
TATU QARSHI FILIALI
KOMPYUTER INJINIRINGI
2 -BOSQICH KI 12-21 GURUH TALABASI
MA’LUMOTLAR TUZULMASI ALGORITMI FANIDAN 
8 amaliy ish


TOPSHIRDI NARZULLAYEV O
QABUL QILDI ABLAQULOV K

Mavzu: Daraxtsimon ko‟rinishdagi ma‟lumotlar tuzilmasini tadqiq qilish.
Ikkilik daraxtsimon ma‟lumotlar tuzilmasini tadqiq qilish.

Ishdan maqsad: Talabalar daraxtsimon tuzilmalar, binar daraxtlarni e’lon qilish,
uning ustida amallar bajarish algoritmlarini tadqiq qilishlari va o’rganishlari kerak,
bu algoritmlarning dasturiy realizatsiyasini amalga oshirish ko’nikmasiga ega
bo’lishlari kerak.
Qo’yilgan masala: Binar daraxtning barcha oraliq tugunlari yozuvini chop etuvchi
dastur ishlab chiqing

Ishning vazifasi:

  • Binar daraxtlarni tashkil qilish. Ular ustida amallar

  • Qidiruv binar daraxti.

Ish tartibi:

  • Amaliy mashg’ulot nazariy ma’lumotlarini o’rganish;

      • Berilgan topshiriqning algoritmini ishlab chiqish;

      • C++ dasturlash muhitida dasturni yaratish;

      • Natijalarni tekshirish;

      • Hisobotni tayyorlash va topshirish.


Nazariy qism.
8.1. Daraxt ko’rinishidagi ma’lumotlar tuzilmasi haqida umumiy
tushunchalar.
Uzellar (elementlar) va ularning munosabatlaridan iborat elementlar to’plamining
ierarxik tuzilmasiga daraxtsimon ma‟lumotlar tuzilmasi deyiladi.
Daraxt – bu shunday chiziqsiz bog’langan ma‟lumotlar tuzilmasiki, u quyidagi
belgilari bilan tavsiflanadi:- daraxtda shunday bitta element borki, unga boshqa elementlardan murojaat yoq.
Bu element daraxt ildizi deyiladi;
- daraxtda ixtiyoriy element chekli sondagi ko’rsatkichlar yordamida boshqa
tugunlarga murojaat qilishi mumkin;
- daraxtning har bir elementi faqatgina o’zidan oldingi kelgan bitta element bilan
bog’langan.


Dastur kodi
#include
#include
using namespace std;
class node{
public: int info;
node *left;
node *right;
};
int k=0;
int intrave(node *tree){
if (tree!=NULL){int a=NULL, b=NULL;
if (tree->left!=NULL){ a=tree->left->info; }
if (tree->right!=NULL){ b=tree->right->info; }
cout<info<<"--chapida=>"<"<
intrave(tree->left);
intrave(tree->right); }
return 0;
}
int height(node *tree){
int h1,h2;
if (tree==NULL) return (-1);
else {
h1 = height(tree->left);
h2 = height(tree->right);
if (h1>h2) return (1 + h1);
else return (1 + h2);
}
}
int create_arr(node *tree,int *arr){
if(!tree) return 0;
else{
create_arr(tree->left,arr);
arr[k++]=tree->info;
create_arr(tree->right,arr);
}
}
node *new_tree(int *arr, int start, int end)
{
if(start>end) return NULL;
else {
int mid=(start+end)/2;
node *tree=new node;
tree->info=arr[mid];
tree->left=new_tree(arr,start,mid-1);
tree->right=new_tree(arr,mid+1,end);
return tree;
}
}
void vizual(node *tree,int l)
{ int i;
if(tree!=NULL) {
vizual(tree->right,l+1);
for (i=1; i<=l; i++) cout<<" ";
cout<info<
vizual(tree->left,l+1);
}
}
int main()
{ int n,key,s; node *tree=NULL,*next=NULL;
cout<<"n="; cin>>n; int arr[n];
for(int i=0; i
node *p=new node;
node *last=new node;
cin>>s;
p->info=s;
p->left=NULL;
p->right=NULL;
if(i==0){tree=p; next=tree; continue; }
next=tree;
while(1)
{ last=next;
if(p->infoinfo)next=next->left;
else next=next->right;
if(next==NULL)break; }
if(p->infoinfo)last->left=p;
else last->right=p;}
cout<
intrave(tree);
cout<<"\nya'ni\n";
vizual(tree,0);
int h=height(tree);
cout<<"balandligi="<
create_arr(tree,arr);
for(int i=0;i
tree=new_tree(arr,0,k-1);
vizual(tree,0);
getch();
}

Yüklə 221,15 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