• 66 - DARS. RUYHATLAR BILAN ISHLASHDA REKURSIYADAN FOYDALANISH.
  • Struktura haqidagi ma'lumotni kiriting




    Download 313,45 Kb.
    bet66/89
    Sana16.11.2023
    Hajmi313,45 Kb.
    #100010
    1   ...   62   63   64   65   66   67   68   69   ...   89
    Bog'liq
    @AKT Official C haqida o\'zbekcha darslar majmui

    Struktura haqidagi ma'lumotni kiriting:
    Sign=sigma
    Weight=16
    Sign=omega
    Weight=44
    Sign=alfa
    Weight=0
    Ruyhatni chiqarish
    Sign=sigma weight=16
    Sign=omega weight=44

    Dasturda ma'lumotlarni kiritish tsikl orqali bajariladi. Tsikl tugatilishi sharti navbatdagi strukturaning int weight elementiga kiritilgan nol qiymatdir.


    Strukturalar ro’yhati dinamik tashkil etiladi. Beg va end ko’rsatkichlar nol qiymati orqali initsializatsiya qilingan. Dasturda (struct cell*) tip o’zgartirishidan foydalanilgan chunki malloc funktsiyasi har doim void tipidagi ko’rsatkich qaytaradi.


    66 - DARS. RUYHATLAR BILAN ISHLASHDA REKURSIYADAN FOYDALANISH.

    Ruyhatning har bir buginida ma'lumot va keyingi element adresi joylashgan.Agar bu ko’rsatkich nol qiymatga ega bo’lsa ro’yhat ohirigacha o’qib bo’lingan. Ruyhatni kurib chiqishni boshlash uchun birinchi elementining adresini bilish etarlidir. Ruyhatni yaratish rekursiv funktsiyasi va ruyhatning elementlarini ekranga chiqarish rekursiv funktsiyasini kurib chiqamiz. Ruyhatni rekursiv tuldirish funktsiyasi quyidagi prototipga ega:


    Struct cell* input(void);
    Bu funktsiya klaviatura orqali kiritilgan ma'lumotlar bilan to’ldirilgan ro’yhatga ko’rsatkich qaytaradi. Funktsiyaga har gal murojaat qilinganda yangi ruyhat yaratiladi. Agar ruyhatning navbatdagi strukturasining weight o’zgaruvchisiga nol qiymat berilsa funktsiya o’z ishini to’htatadi. Aks holda klaviatura orqali tuldirilgan struktura ruyhatga ulanadi va uning struct cell*pc elementining qiymati funktsiya tanasidan rekursiv chaqirilgan input() funktsiyasi qaytargan qiymatga teng bo’ladi.
    Funktsiya tanasi:
    Struct cell
    {
    char sign[10];
    int weight;
    struct cell*pc;
    };
    #include
    #include
    struct cell * input(void)
    {
    struct cell*p;
    p=(struct cell*) malloc(sizeof(struct sell));
    printf(“sign=”);
    scanf(“%s”,&p->weight);
    if (p->weight==0)
    {
    free(p);
    return NULL;
    }
    p->pc=input();
    return p;
    /* */

    void output(struct cell * p)


    {
    if (p==NULL)
    {
    printf(“\nRuyhat tugadi”);
    return;
    }
    printf(“\nsign=%s\tweight=%d”,p->sign,p->weight);
    output(p->pc);
    }
    void main()
    {
    struct cell * beg=NULL;
    printf(“\Ruyhat elementlarini kiriting:\n”);
    beg=input();
    printf(“\n Ruyhatni chikarish:”);
    output(beg);
    }

    Dastur bajarilishiga misol:


    Ruyhat elementlarini kiriting:


    Sign=Zoro
    Weight=1938
    Sign=Zodiac
    Weight=1812
    Sign=0
    Weight=0

    Ro’yhatni chiqarish:


    Sign=Zoro weight=1938
    Sign=Zodiac weight=1812
    Ruyhat tugadi



    Download 313,45 Kb.
    1   ...   62   63   64   65   66   67   68   69   ...   89




    Download 313,45 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Struktura haqidagi ma'lumotni kiriting

    Download 313,45 Kb.