void delete(struct slist_node*p) – berilgan tugundan keyingi elementni o‘chirish
void insert(struct slist_node*p, int nn) - berilgan elementdan keyin element qo‘shish
int empty(struct slist_node*beg) – ro‘yxat bo‘shligini tekshirish
Bu funksiya asosida quyidagi funksiyalar kiritilgan
struct slist_node* creat_slist(int size) – berilgan sondagi tugundan iborat ro‘yxatni yaratish. Tugun axborot qismi klaviatura orqali kiritilgan sonlar bilan to‘ldiriladi.
void free_slist(struct slist_node* beg) – ro‘yxatni o‘chirish
void print_slist(struct slist_node* beg) - ro‘yxat elementlarini ekranga chiqarish
Stek
Stek deb shunday strukturaga aytiladiki, stekka kelib tushgan oxirgi elementga birinchi bo‘lib xizmat ko‘rsatiladi va stekdan chiqariladi. Mazkur ko‘rinishdagi xizmat ko‘rsatishni LIFO (Last input-First output, ya’ni oxirgi kelgan – birinchi ketadi) nomlash qabul qilingan. Stek bir tomondan ochiq bo‘ladi. Stekka bolalar piramidasi va kitoblar qatlamini misol keltirish mumkin.
6.1.-rasm. Stekka misollar
Steklar asosan arifmetik ifodali masalalarni tahlil qilishda, perebor (ajratish) li masalalarda hamda graflardagi algoritmlarda ishlatiladi.
Stekni amalga oshirish uchun chiziqli ro‘yxatdan foydalaniladi, ya’ni ro‘yxatda boshida ko‘rsatkichda saqlanadi:
6.2.-rasm. Stekni chiziqli ro‘yxat orqali ifodalash
Qo‘shish va o‘chirish amallari ro‘yxat boshidan amalga oshiriladi. Bo‘sh stekda ko‘rsatkich boshi (0) ga teng.
Misol, agar stek 4 ta sondan tashkil topgan bo‘lsin. Ular o‘z navbatida 0, 1, 2 va 3 bilan raqamlangan. h = 4 ga teng, ya’ni stekda 4 ta son bor va keyingi qo‘shilayotgan sonni o‘rni stek massivida 4 bo‘ladi. Buni quyidagicha tasvirlash mumkin:
6.3-rasm. Stekni massiv orqali tasvirlash
Stek boshiga element qo‘shish uchun qiymatni yozamiz va h ko‘rsatkichni oshiramiz:
a[h ++] = k;
Stekga qiymati k=9 sonini qo‘shish jarayonini quyidagicha grafik ko‘rinishda tasvirlash mumkin:
6.4-rasm. Massivga element qo‘shish
Stek boshidan elementni chiqarish uchun teskari amaldan foydalanish lozim:
k = a[ -- h];
Bo‘sh stekning boshidagi ko‘rsatkichi h = 0 ga teng. Massivga element qo‘shish va o‘chirish davomida stek boshi massiv bo‘ylab ko‘chib turadi.
Universal stekning har bir tuguni axborot qismi void turidagi ko‘rsatkichdan iborat strukturadir:
struct slist_node
{
void* info;
struct slist_node* pred;
};
Stek tugunining ro‘yxat tugunidan farqi shundaki, o‘zidan oldingi tugun adresini saqlovchi ko‘rsatkich ishlatilgan.
Stek o‘zi alohida struktura sifatida kiritilgan
struct stack
{
struct slist_node* end;
int size;
int width;
};
Bu yerda end oxirgi tugunga ko‘rsatkich, width ma’lumot hajmi, size navbatdagi elementlar soni.
Asosiy funksiyalar:
Do'stlaringiz bilan baham: |