10-ma’ruza: navbat tuzilmalari: stek, navbat va dek reja


Download 126.31 Kb.
bet4/11
Sana11.11.2021
Hajmi126.31 Kb.
#173577
1   2   3   4   5   6   7   8   9   10   11
Bog'liq
10-hafta maruza

void main() {

char br1[3]={’(’, '[', '{' }; //ochiluvchi qavslar

char br2[3]={’)’, ']', '}' }; //yopiluvchi qavslar

   char s[80], upper;

   int i, k, OK;

   Stack S; // belgilar steki



printf("Qavsli satrni kiriting > ”);

gets (s);

S.size=0; // stek bo’sh

OK = 1;

for (i = 0; OK && (s[i] != '\0'); i ++)

for (k = 0; k < 3; k ++)  {  //3 turdagi qavsni tekshirish

if (s[i] == br1[k]) { // ochiluvchi qavs

Push (S, s[i] ); break;

}

if (s[i] == br2[k]) { // yopiluvchi qavs

upper = Pop (S);

 if (upper != br1[k]) OK = 0;



break;

}

}

if (OK && (S.size == 0))

printf("\nIfoda to’g’ri\nP);

else printf("\nIfoda noto’g’ri \n”);

}

Ochiluvchi va yopiluvchi qavslar br1 va br2 massivlariga yoziladi. Eng boshida stek bo’sh va uning o’lchami nolga teng (S.size = 0). Xatolik yuz bersaOK o’zgaruvchisi tashqi tsikldan chiqishni ta’minlaydi (satrning qolgan qismi qaralmaydi). Bu o’zgaruvchiga nol qiymati ta’minlanadi, agarda stekda boshqa turdagi qavs uchrasa yoki stek bo’sh bo’lsa.

Stekni ro’yxat yordamida tadbiq qilish. Belgilarni saqlovchi stekka misol qarab chiqamiz (bu eng oddiy holat, stek elementlari ixtiyoriy turdagi tuzilma bo’lishi mumkin, xuddi shunday ro’xat bo’lishi ham mumkin). Stekni ikki bog’lamli ro’yxat asosida tadbiq qilamiz. Buning uchun stek elementlari sonini mumkin bo’lgan xotira hajmi bilan chegaralaymiz.


Download 126.31 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   11




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling