Mavhum ma'lumotlar turlari ro'yxati


Download 7.26 Kb.
Sana02.06.2024
Hajmi7.26 Kb.
#1837247
Bog'liq
Mavhum ma\'lumotlar turlari ro\'yxati

Mavhum ma'lumotlar turlari ro'yxati

CreateList(List) - bo'sh ro'yxat hosil qiladi DeleteList(List) - Ro'yxatni yo'q qiladi IsEmpty(List) - Ro'yxat bo'sh yoki yo'qligini aniqlaydi Insert(index, NewElement, List) - yangi elementni NewElement joylashuv indeksidagi Ro'yxatga kiritadi. Remove (indeks, List) - ichida joylashgan ro'yxat elementini olib tashlaydi

TypeItem Retrive(indeks, List) – pozitsiya indeksida joylashgan elementni qaytaradi Getlength(List) - Ro'yxatdagi elementlar sonini qaytaradi Pos Find(Ro'yxat, Element) - elementning o'rnini qaytaradi (Pos element raqami yoki ba'zi elementga ko'rsatgich bo'lishi mumkin)


Abstrakt ro'yxat bo'yicha operatsiyalar

Elementlarning turini va elementning "joylashuvi" tushunchasini aniqlash kerak. typedef int TypeItem - element turi oddiy yoki murakkab bo'lishi mumkin typedef int Pos - bu holda elementning o'rni uning ro'yxatdagi raqami bo'ladi


Massivlar yordamida amalga oshirilganda, barcha ro'yxat elementlari qo'shni kataklarda joylashgan va har bir element ma'lum bir raqamga ega.
Bu roʻyxatni koʻrib chiqish va roʻyxatning boshi va oxiriga elementlarni qoʻshish va olib tashlashni osonlashtiradi.
Biroq, ro'yxatning o'rtasiga element qo'shish bizdan boshqa barcha elementlarni o'chirishni talab qiladi, xuddi o'chirish kabi.
Biz elementlarning maksimal sonini aniqlaymiz:
max_list 100 ni aniqlang;// ro'yxat elementlarining maksimal soni

Ro’yhat tuzilishini tafsiflash: Struct List{ TypeItem Items[Max_list]; //ro’yhat elementlari massivlari int last ;// keying element indiksi

Void create List (List L) {L.last=0;}

Viod Insert (int n, TypeItem NewItem, List L) { if (L.last>=100) cout<<’Navbat to‘lgan’; else if (n>L.last || n<1) cout<<‘Bunday pozitsiya yo‘q’; else {for (i=L.Last; i>=n; i--) L.Items[i+1]=L.Items[i]; L.last=L.last+1; L.Items[n]=NewItem; } } // end Insert

Viod Remove(int n, List L) { if (n>L.last || n<1) cout<<‘bundaqa pozitsiya mavjud emas ’; else {L.last=L.last-1; for (i=n; i<=L.last; i++) L.Items[i]=L.Items[i+1]; } } //end Remove

Pos Find(TypeItem x, List L) {for (i=n; i<=L.last; i++) if (L.Items[i]=x) return(i); return(L.last+1);// x topilmadi } //end Remove

Ko'rsatkichlar yordamida ro'yxatlarni amalga oshirish

Bunday holda, ro'yxat elementlari qo'shni kataklarda joylashishi shart emas,

elementlarni bog'lash uchun ko'rsatgichlardan foydalaniladi. Ushbu amalga oshirish,

bir tomondan, bizni qo'shni xotira maydonidan foydalanishdan ozod qiladi .

Roʻyxatga element qoʻshish yoki oʻchirishda elementlarni koʻchirishga hojat yoʻq.

Ko'rsatkichlarni saqlash uchun qo'shimcha xotira talab qilinadi

Ko'rsatkichlar yordamida bog'langan ro'yxatlarni amalga oshirish


Mos yozuvlar qismi –keying elementga ko’rsatgich
Axborot qismi

Ro'yxat tuzilishi ta'rifi:

typedef struct celltype

{

TypeItem Item;//ro’yhat elementi

celltype *Next; // keying elementga ko’rsatkich

}

typedef celltype *list;//

Kerakli turlar va o'zgaruvchilarning tavsiflari

typedef int Pos;//elementning o'rni uning ro'yxatdagi raqami bo'ladi

typedef celltype *Pos;// element pozitsiyasi ushbu elementga ko'rsatgich bo'ladi

Funktsiyalar ro'yxati

Void CreateList(List S)//bo’sh ro’yhat yaratish

{ S=new celltype;

S->next=NULL;

}

void Insert (TypeItem x, Pos n, list S)

{list temp, current;

temp=S; current=S->Next;

Pos i=1;

while(current!=0)

{if (i==n)

{temp=new celltype;

temp->Next=current->Next;

temp->Item=x;

current->Next=temp;

break;}

Amalga oshirishni taqqoslash

Massivlar yordamida ro‘yxatlarni amalga oshirish,

dasturni bajarishdan oldin massivning maksimal hajmini belgilashni talab qiladi.

Agar ro'yxatning uzunligi oldindan ma'lum bo'lmasa, uni ko'rsatgichlar yordamida

amalga oshirish yanada samaraliroq bo'ladi.

Bog'langan ro'yxatlar holatida INSERT va DELETE protseduralari har qanday

uzunlikdagi ro'yxatlar uchun cheklangan miqdordagi bosqichlarda amalga oshiriladi.

Amalga oshirishni taqqoslash


.

Massivlar yordamida ro'yxatlarni amalga oshirish xotiradan foydalanish nuqtai

nazaridan behuda bo'lib, darhol zahiraga olinadi. Ko'rsatkichlardan foydalanganda

ular uchun xotira maydoni ham kerak bo'ladi. Ko'rsatkichlardan foydalanganda juda

ehtiyot bo'lishingiz kerak. Shuning uchun, turli hollarda, bir yoki boshqa amalga oshirish

foydaliroq bo'lishi mumkin.

Ikki marta bog'langan ro'yxatlar

Oldinga va teskari yo'nalishlarda ro'yxat orqali samarali harakatni tashkil qilish

zarur bo'lgan ilovalarda qo'llaniladi

Ikki marta bog'langan ro'yxatlar


oldingi elementga ko'rsatgich
axborot qismi
keyingi elementga ko'rsatgich

E’tiboringiz uchun raxmat

  • Jamolov Asliddin

Download 7.26 Kb.

Do'stlaringiz bilan baham:




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