Halqasimon ikki bog’lamli ro’yhatlar reja: Halqasimon ikki bog’lamli ro’yhatga yangi element kiritish algoritmi


Download 0.53 Mb.
Sana23.04.2023
Hajmi0.53 Mb.
#1388511
Bog'liq
HALQASIMON IKKI BOG’LAMLI RO’YHATLAR


HALQASIMON IKKI BOG’LAMLI RO’YHATLAR
REJA:

  1. Halqasimon ikki bog’lamli ro’yhatga yangi element kiritish algoritmi

  2. Halqasimon ikki bog’lamli ro’yhatdan elementni o’chirish algoritmi

  3. Halqasimon ikki bog’lamli ro’yhat elementlarini ekranga chiqarish dasturi

Halqasimon ikki bog’lamli ro’yhatda har bir yelement ikkita ko’rsatkichli maydonga ega bo’lib, ular o’zidan oldingi va keyingi elementlarga ko’rsatkich hisoblanadi. Birinchi elementning chap ko’rsatkichi ohirgi elementni, ohirgi elementning o’ng ko’rsatkichi birinchi elementni ko’rsatadi.



Halqasimon ikki bog’lamli ro’yhatni C++ da e’lon qilinishi:
struct Node
{
int info;
Node* next;
Node* prev;
};
Node *List=NULL, LastPtr=NULL;
Halqasimon ikki bog’lamli ro’yhatga yangi element kiritish algoritmi

  1. Yangi elementyaratamiz:

Node *p= new Node;
2. Bu element informatsion maydoniga ma’lumot kiritamiz:
p->data = x ;
3. Bu elementni quyidagi rasmdagi 2-elementdan keyin qo’shish uchun 2-element, ya’ni ohirgi element adresi kerak bo’ladi.

Uni List ko’rsatayotgan 1-elementning prev maydonidan olsa bo’ladi.ya’ni
Node *LastPtr=List->prev; 
Demak, ohirgi elementning adresi LastPtr da saqlanayapti.

  1. Ohirgi elementning next maydoniga yangi element r ni adresini o’zlashtiramiz:

LastPtr ->next = p;
Yangi elementning prev maydoniga yesa shu ohirgi elementning adresini o’zlashtiramiz, ya’ni:
p ->prev= LastPtr;
Hozircha ro’yhatimiz quyidagicha ko’rinishga ega bo’ldi:

Navbatdagi qilinadigan ishimiz ro’yhat boshi va ohirgi elementlarni o’zaro bog’lab qo’yish bo’ladi, ya’ni;
p->next = List;
List->prev = p;
Ushbu amallardan keyin yangi elementimiz ro’yhatga qo’shiladi:

Algoritm dasturi:
void AddList(int value){
Node *p=newNode;
p->data=value;
if (List==NULL) {
p->next=p;
p->prev=p;
List =p;
}
else{
Node *LastPtr= List ->prev;
LastPtr->next=p;
p->prev=LastPtr;
p->next= List;
List ->prev=p;}}
Halqasimon ikki bog’lamli ro’yhatdan elementni o’chirish algoritmi

  1. O’chirilishi kerak bo’lgan joriyelementp dan oldin turgan element adresini prev ko’rsatkichga o’zlashtirib olamiz

Node *Prev=p->prev;

  1. oldin turgan elementning next maydoniga p dan keyin turgan element adresini yozamiz:

Prev->next=p->next;

  1. joriyelementdan keyin turgan elementni Next deb belgilab olib, uning prev maydoniga joriyelementdan oldin kelgan elementni adresini o’zlashtiramiz:

Node *Next=p->nextI;
Next->prev=Prev;
delete(p);
Natijada joriypelemento’chiriladi.

void delete(Node *p){
Node *Prev=p->prev;
Prev->next=p->next;
Node * Next=p->next;
Next->prev=Prev;
delete(p);
}
Halqasimon ikki bog’lamli ro’yhat elementlarini ekranga chiqarish dasturi
void printList(Node* List)
{
Node *p=List;
Node *firstItem=List;
while(p)
{
cout<
data<<“ ”;

p=p->next;
if(p==firstItem) break;
};
}
Download 0.53 Mb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling