#include
dep múrajat qılıw kerek. Programmada stekti da
ǵ
azalaw
ushın tómendegishe jazıw kerek.
Stack
stek_atı;
Mısal ushın,
Stack stekl;
Stekte tómendegi ámeller orınlı:
-
Clear()
- Stekti tazalaw.
-
isEmpty()
– Stekti boslıqqa tekseriw
-
push(el)
- Stekke element kiritiw.
-
pop()
– Stekten element óshiriw.
-
topEl()
- stektiń ushinda
ǵ
i elementti óshirmesten oqıp alıw.
Olardan paydalanıw bolsa tómendegishe:
stek1.push(x)
– x ti stekke taslaw;
Stekke element qosıw hám shı
ǵ
arıw amelleri tómendegi 1 – suwrette
kórsetip berilgen.
1 – súwret. Stekte orınlan
ǵ
an ámeller izbe – izligi.
Onda bos stekke 10 sanı kiritilgen. Keyin stekke 5 sanı kiritilgen, bul
san 10 nıń ústine jaylasadı, onnan keyin shı
ǵ
arıw ámeli orınlan
ǵ
anda, stekten 5
sanı óshiriledi. Sebebi ol 10 sanınıń joqarısında jaylasqan edi hám 5 sanı
stekten shı
ǵ
arıladı. Stekke 15 hám 7 sanı izbe - iz qoyıl
ǵ
annan soń, eń
joqarıda 7 sanı boladı. Natiyjede shı
ǵ
arıw operaciyası ámelge asırıl
ǵ
anda 7 sanı
stekten ketedi. Shı
ǵ
arıw ámelinen keyin stekte 10 sanı 15 tiń astında qaladı.
Ulıwma al
ǵ
anda, stek ma
ǵ
lıwmatlar saqlawda hám ma
ǵ
lıwmatlar
toplamınan elementler teris tártipte shı
ǵ
arıp alınatu
ǵ
ın ja
ǵ
daylarda kóp
paydalanıladı. Stektiń qollanılıwlarına mısal etip programmada ajratqıshlardı
maslastırıwdı alıw mumkin. Bul júdá zárúr másele. Sebebi, ajratqıshlar
qálegen kompilyatordıń bólegi esaplanadı. Eger ajratqıshlar bir– birine
maslastırılma
ǵ
an bolsa, hesh bir programma túri islemeydi.
C++ programmalastırıw tilinde biz tómendegi ajratqıshlar
ǵ
a iyemiz: ápiwayı
qawsırmalar “( )”, kvadrat qawsırlar “[ ]”, figuralı qawsırmalar “{ }”, hám táriyp
ajratqıshlar -“/*” hám “*/”. Tómende C++ programmalastırıw tilinde ajratqıshlar
tuwrı qollanıl
ǵ
anlı
ǵ
ına mısal keltirilgen.
a = b + (c - d) * (e - f);
g[10] = h[i[9]] + (j + k) * l;
while (m < (n[8] + o)) { p = 7; /* initialize p */ r = 6; }
Tómendegi mısal maslastırılma
ǵ
an ajratqıshlar
ǵ
a mısal bola aladı:
a = b + (c - d) * (e - f));
g[10] = h[i[9]] + j + k) * l;
while (m < (n[8) + o]) { p = 7; /* initialize p */ r = 6; }
Konkret ajratqısh óz juplı
ǵ
ınan basqa ajratqıshlar menen ajratılıwı
mumkin, ya
ǵ
nıy ajratqıshlar ishpe – ish qoyıl
ǵ
an bolıwı mumkin. Solay etip,
ajratqısh óz juplı
ǵ
ı menen maslasqanba yaki joqlı
ǵ
ın, barlıq ajratqıshlar juplıqları
anıqlan
ǵ
annan keyin biliw mumkin.
Máselen, cikldan paydalanıl
ǵ
anda baslan
ǵ
ısh qawsırma óz juplı
ǵ
ına iye
ekenligin barlıq ishki qawsırmalar juplıqları jabıl
ǵ
annan keyin anıqlaw múmkin.
while (m < (n[8] + o))
Ajratqıshlardı salıstırıw algoritmi tómendegishe:
- belgiler C++ programma tekstinen oqıladı hám ol óshiwshi ajratqısh bolsa, olar
stekke taslanadı. Eger jabıwshı ajratqısh bolsa, ol óshiwshi ajratqısh penen
salıstırıladı hám stekten shı
ǵ
arıladı.
-Eger olar mas tússe, qayta islew dawam etedi, mas túspese qayta islew qatelik
haqqında
ǵ
ı xabar menen toqtatıladı.
Programma aqırına jetkende C++ programmanı qayta islew nátiyjeli
tamamlan
ǵ
an esaplanadı hám stek bos boladı. Usı algoritmniń tómende
psevdo kodın keltiremiz.
Ajratqıshlardıń maslasıwın tekseriw kodı.
2-suwrette joqarıda
ǵ
ı algoritmdi tómendegi ańlatpanı qayta islewge
qollan
ǵ
anda payda bol
ǵ
an qayta islew kórsetilgen
s=t[5]+u/(v*(w+y));
2-suwret. Ajratqıshlar maslastırıw algoritmi jardeminde
s=t[5]+u/(v*(w+y)); ańlatpanı tekseriw.
2- suwrettegi birinshi ba
ǵ
anada cikl aqırınan keyingi belgige shekem bol
ǵ
an
stek quramı kórsetilgen. Birinshi qatar faylda
ǵ
ı hám stektegi baslan
ǵ
ısh halatı
kórsetilgen. Ch ózgeriwshi s jazıw faylınıń birinshi simvolina inicializaciya qılınadı,
sikldiń birinshi iteraciyasinda simvol qabıl qılınaydı.
Bul ja
ǵ
day 2- suwrettiń ekinshi qatarında kórsetilgen. Onnan keyin teńlik belgisi
oqıladı. Ol da qabıl qılınbaydı, sebebi ol ajratqısh emes. Birinshi ajratqısh (kvadrat
qawıs ) 5-adımda oqıladı hám stekke birinshi element bolıp jaylasadı. Belginiń barlıq
elementleri oqıp shı
ǵ
ıl
ǵ
annan soń ajratqıshlar izbe – iz stekke jaylasadı, hám bul
protsess aqır
ǵ
ı noqatlı útirge shekem dawam etedi.
Stektiń qollanılıwına basqa mısal etip, júdá ulken sanlardı qosıw máselesin kóriw
múmkin. Bunday sanlar putin tiptegi ózgeriwshiler ushın múmkin bol
ǵ
an
shegaralardan shı
ǵ
ıp ketedi. Sonıń ushın olardı qosıw haqqında gáp hám bolıwı
múmkin emes. Máselen,
18,274,364,583,929,273,748,459,595,684,373 hám 8,129,498,165,026,350,236
sanları berilgen. Olardı qosıw máselesin sanlardı cifrlar qatarı sıpatında suwretlep,
cıfrı boyınsha eki stekke izbe – iz jaylastırıp qosıw mumkin
boladı. Bunda cifr sıpatında sanlardı tártip xanaları (birler , onlar, júzler…)
alınadı. Bul algoritmniń psevdo kodı tómendegishe:
3-suwrette joqarida
ǵ
ı algoritmdi 592 hám 3,784 sanlardı qosıwdı ámelge
asırıw ushın qollanılıwı kórsetilgen.
1.
Birinshi sannıń mas tsifrları 1-stekke jaylasadı hám ekinshi sannıń mas cifrları
2-stekke jaylasadı.Stektegi cifrlar tártibine itibar qaratıw kerek.
3- suwret. Stek járdeminde sanlardı qosıw
2.
2 hám 4 ler steklerden shı
ǵ
arıladı hám olardıń jıyındısı 6 juwmaqlawshı stekke
kiritiledi.
3.
9 hám 8 ler hám steklerden shı
ǵ
arıladı hám olardıń jıyındısınıń birlik bólegi
juwmaqlawshı stekke jaylastırıladı, onlıq bólegi bolsa keyingi nátiyjege qosıw
ushın carry da saqlap qoyıladı.
4.
5 hám 7 ler de stekten shı
ǵ
arıladı hám olardıń qosındısınıń birlik bólegi
juwmaqlawshı stekke jaylasadı, onlıq bólegi bolsa keyingi nátiyjege qosıw
ushın carry da saqlap qoyıladı.
5.
Birinshi stek bos bol
ǵ
anda, bos bolma
ǵ
an stekten soń shı
ǵ
arıladı hám carry
ǵ
a
qosıladı, nátiyje juwmaqlawshı stekke jaylasadı.
6.
Eki stek bos bolsa, sanlar qosındısı juwmaqlawshı stekten alınadı hám nátiyje
sıpatında ekran
ǵ
a shı
ǵ
arıladı.
Endi ma
ǵ
lıwmatlar strukturasında abstrakt stekti ámelge asırıwdı kóremiz. Stekti
ámelge asırıwdıń ayqın kórinisi dinamik massiv, ya
ǵ
nıy vektorda orınlanıwı múmkin.
4-suwret. Stektiń vektorda ámelge asrılıwı
5-súwret. Stektiń baylanısqan strukturada ámelge asırılıwı.
6-súwret. Abstrakt stek (a), stektiń vektorda ámelge asırılıwı (b) hám stektiń
baylanısqan strukturada ámelge asırılıwı (c) ushın ámeller izbe-izligi.
Do'stlaringiz bilan baham: |