Mavhum ma'lumotlar turlari ro'yxati
Download 7.26 Kb.
|
Mavhum ma\'lumotlar turlari ro\'yxati
Mavhum ma'lumotlar turlari ro'yxatiCreateList(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 tashlaydiTypeItem 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'ladiMassivlar 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 indiksiVoid 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 InsertViod 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 RemovePos 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 RemoveKo'rsatkichlar yordamida ro'yxatlarni amalga oshirishBunday 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 qilinadiKo'rsatkichlar yordamida bog'langan ro'yxatlarni amalga oshirishMos yozuvlar qismi –keying elementga ko’rsatgich Axborot qismi Ro'yxat tuzilishi ta'rifi:typedef struct celltype{TypeItem Item;//ro’yhat elementicelltype *Next; // keying elementga ko’rsatkich}typedef celltype *list;//Kerakli turlar va o'zgaruvchilarning tavsiflaritypedef int Pos;//elementning o'rni uning ro'yxatdagi raqami bo'laditypedef celltype *Pos;// element pozitsiyasi ushbu elementga ko'rsatgich bo'ladiFunktsiyalar ro'yxatiVoid 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 taqqoslashMassivlar 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 yordamidaamalga oshirish yanada samaraliroq bo'ladi.Bog'langan ro'yxatlar holatida INSERT va DELETE protseduralari har qandayuzunlikdagi ro'yxatlar uchun cheklangan miqdordagi bosqichlarda amalga oshiriladi.Amalga oshirishni taqqoslash. Massivlar yordamida ro'yxatlarni amalga oshirish xotiradan foydalanish nuqtainazaridan behuda bo'lib, darhol zahiraga olinadi. Ko'rsatkichlardan foydalangandaular uchun xotira maydoni ham kerak bo'ladi. Ko'rsatkichlardan foydalanganda judaehtiyot bo'lishingiz kerak. Shuning uchun, turli hollarda, bir yoki boshqa amalga oshirishfoydaliroq bo'lishi mumkin.Ikki marta bog'langan ro'yxatlarOldinga va teskari yo'nalishlarda ro'yxat orqali samarali harakatni tashkil qilishzarur bo'lgan ilovalarda qo'llaniladiIkki marta bog'langan ro'yxatlaroldingi elementga ko'rsatgich axborot qismi keyingi elementga ko'rsatgich E’tiboringiz uchun raxmat
Download 7.26 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling