• Ro’yxat boshiga qo’yish usuli
  • Transpozitsiya usuli
  • p – ishchi ko‘rsatkich q




    Download 0,92 Mb.
    bet2/2
    Sana17.11.2023
    Hajmi0,92 Mb.
    #100658
    1   2
    Bog'liq
    Malumotlar tuzilmasi 2

    p – ishchi ko‘rsatkich
    q – yordamchi ko‘rsatkich, p dan bitta qadam orqada bo‘ladi
    s – yordamchi ko‘rsatkich, p dan ikkita qadam orqada bo‘ladi
    Biz tomonimizdan topilgan uchinchi element ro‘yhat boshiga bir qadam suriladi (ya’ni ikkinchi bo‘lib qoladi). Birinchi element ko‘rsatkichi uchinchi elementga joylashtiriladi, ikkinchi element ko‘rsatkichi to‘rtinchi, shunday qilib uchinchi element ikkinchi joyga joylashib qoladi. Agar mazkur elementga yana bir bor murojaat qilinsa, u holda u ro‘yhat boshida bo‘lib qoladi.
    node *s=NULL;
    node *q=NULL;
    node *p=table;
    while (p != NULL){
    if (key == p->k){ //transponerlaymiz
    if( q ==NULL){//o‘rinlashtirish shart emas
    search=p;
    exit(0);
    }
    q->nxt=p->nxt;
    p->nxt=q;
    if (s == NULL) table = p;
    else s->nxt = p;
    search=p;
    exit(0);
    }
    s=q;
    q=p;
    p=p->nxt;
    }
    search=NULL;
    exit(0);



    1. Qo’yilgan masala: Boshiga qo‘yish va transpozitsiya usulidan foydalanib massiv eng katta elementi topilsin.

    Dastur kodi:


    Ro’yxat boshiga qo’yish usuli:
    #include
    using namespace std;

    struct node {


    int data;
    node* nxt;
    };

    int main() {


    int n;
    cout << "Massiv uzunligini kiriting: ";
    cin >> n;
    node* table = NULL;
    node* p = NULL;
    for (int i = 0; i < n; i++) {
    int num;
    cout << "Massivning "<< i + 1 <<"-elementini kiriting: ";
    cin >> num;
    node* newNode = new node;
    newNode->data = num;
    newNode->nxt = NULL;
    if (table == NULL) {
    table = newNode;
    p = newNode;
    } else {
    p->nxt = newNode;
    p = newNode;
    }
    }
    int maxElement = table->data;
    node* q = NULL;
    node* s = NULL;
    p = table;
    while (p != NULL) {
    if (p->data > maxElement) {
    maxElement = p->data;
    }
    s = q;
    q = p;
    p = p->nxt;
    }
    cout << "Eng katta element: " << maxElement << endl;
    return 0;
    }

    Transpozitsiya usuli:
    #include
    using namespace std;

    struct node {


    int data;
    node* nxt;
    };

    int main() {


    int n;
    cout << "Massiv uzunligini kiriting: ";
    cin >> n;
    node* table = NULL;
    node* p = NULL;
    for (int i = 0; i < n; i++) {
    int num;
    cout << "Massiv elementini kiriting: ";
    cin >> num;
    node* newNode = new node;
    newNode->data = num;
    newNode->nxt = NULL;
    if (table == NULL) {
    table = newNode;
    p = newNode;
    } else {
    p->nxt = newNode;
    p = newNode;
    }
    }
    int maxElement = table->data;
    node* q = NULL;
    p = table;
    while (p != NULL) {
    if (p->data > maxElement) {
    maxElement = p->data;
    }
    q = p;
    p = p->nxt;
    }
    cout << "Eng katta element: " << maxElement << endl;
    return 0;
    }

    Dastur ishlash algoritmi:
    1. Kod foydalanuvchidan massiv uzunligini (elementlar sonini) kiritishni taklif qiladi.
    2. Keyin jadval va p ko'rsatkichlarini NULL ga ishga tushirish orqali bo'sh bog'langan ro'yxatni yaratadi.
    3. Foydalanuvchidan n ta element olish uchun n marta takrorlanadi va ularni bog'langan ro'yxatga qo'shadi.
    4. Har bir element uchun yangi tugun hosil qiladi, element qiymatini tugunning ma’lumotlar maydoniga belgilaydi va nxt ko‘rsatkichini NULL ga o‘rnatadi.
    5. Agar bog'langan ro'yxat bo'sh bo'lsa (jadval == NULL), u jadval va p ko'rsatkichlarini yangi yaratilgan tugunga o'rnatadi. Aks holda, u oldingi tugunning nxt ko'rsatkichini (p) yangi tugunga o'rnatish va p ni yangi tugunni ko'rsatish uchun yangilash orqali yangi tugunni bog'langan ro'yxatning oxiriga qo'shadi.
    6. Bog'langan ro'yxatga barcha elementlar qo'shilgandan so'ng, u maxElementni ro'yxatdagi birinchi tugunning qiymatiga ishga tushiradi.
    7. Keyin u har bir elementni maxElement bilan solishtirib, bog'langan ro'yxat bo'ylab takrorlanadi. Agar element maxElement dan katta bo'lsa, u maxElementni yangilaydi.
    8. Nihoyat, u bog'langan ro'yxatda topilgan maksimal elementni chop etadi.

    Xulosa
    Men bu laboratoriya ishini bajarish davomida qidiruv usullarini, ular bilan ishlashni va ularnining samaradorligini taqqoshlashni o’rgandim.

    Download 0,92 Mb.
    1   2




    Download 0,92 Mb.