ro’yxatlar ustida amallar bajarish. Bog’LANGAN ro’y-fayllar.doc
p = lst; do { printf("%d",p->field); //p elementni chiqarish
p = p->next; //keyingi tugunga o’tish
} while (p != lst); //ro’yxatning tugallanish sharti
} IBHR da ushbu funktsiyani elementlarni teskari tartibda chiqarish uchun ham qo’llash mumkin. Buning uchun funksiya argumenti sifatida ro’yxat boshiga ko’rsatkich olinadi va funktsiya ko’rsatkichi ro’yxatning oxirgi tuguniga suriladi. Ro’yxat oxiridan boshlab, elementlar ketma-ket o’qiladi.
void listprintr(list *lst) { struct list *p; p = lst; do { p = p->prev; //oldingi tugunga o’tish
printf("%d", p->field); //p elementni chiqarish
} while (p!=lst); // ro’yxatning tugallanish sharti
} IBXR tugunlari o’rnini almashtirish. Tugunlarni o’zaro o’rnini almashtirish funktsiyasining argumenti sifatida ikkita o’rni almashayotgan tugunlar ko’rsatkichi olinadi, shuningdek, ro’yxat boshi ko’rsatkichi ham qabul qilinadi. Funktsiya ro’yxat boshi adresini qaytaradi. Tugunlar o’rnini almashtirish ko’rsatkichlarni qayta o’rnatish orqali amalga oshiriladi. Buning uchun har bir almashayotgan tugunlarning oldingi va keyingi o’rinlarida joylashgan tugunlarni aniqlab olish kerak. Buning uchun ikkita holat bo’lishi mumkin:
- o’rni almashayotgan tugunlar o’ziro qo’shni bo’lgan hol;
- o’rni almashayotgan tugunlar o’zaro qo’shni bo’lmagan hol, ya’ni ular o’rtasida hech bo’lmaganda bitta tugun mavjud bo’lgan hol.
Qo’shni tugunlar o’rnini almashtirishda ko’rsatkichlarni qayta o’rnatish quyidagicha ko’rinishda bo’ladi
Qo’shni bo’lmagan tugunlarning o’rnini almashtirish quyidagicha bo’ladi
Ro’yxatda qo’shni bo’lmagan tugunlar o’rnini almashtirish
IBHRda tugunlar o’rnini almashtirish funksiyasi quyidagicha bo’lishi mumkin:
struct list * swap(struct list *lst1, struct list *lst2, struct list *head) { // Ro’yxatning yangi boshi qaytariladi