Бағдарламалу технологиясы


Стек типіндегі құрылыммен жұмысты ұйымдаcтыру



жүктеу 1,63 Mb.
бет58/73
Дата03.02.2022
өлшемі1,63 Mb.
#35497
түріОқулық
1   ...   54   55   56   57   58   59   60   61   ...   73
Ба?дарламалу технологиясы

11.2 Стек типіндегі құрылыммен жұмысты ұйымдаcтыру

Стек типіндегі құрылым әртүрлі есептеу үдерісінде кең қолданылады. Компьютер процессоры үзуді өңдеу барысында стекті қолданады. Алгоритмдердің көпшілігі алгоритмді алдыңғы қалпына «қайтаруды» орындау үшін стекттерді қолданады, мысалы, лабиринтті, графты немесе бұтақтарды жүріп өткен кезде. Көптеген көліктер туралы есептерді шешу алгоритмдерінде оңтайлы маршруттарды табу үшін стек пайдаланылады, т.б.

Әлбетте, «Алгоритмизация және бағдарламалау» пәнінде стек сияқты құрылымды қарастырмай өте алмаймыз, C# тілінде оған әдістер жиыны бар арнайы класс (Stack) бөлінген.

Стектермен жұмысты орындау барысында негізгі алгоритмдер: стекке элементті қосу алгоритмі, стектен элементті жою алгоритмі, стек мазмұнын қарау.

Стек типіндегі құрылымға қол жеткізу әдетте стек төбесі деп аталатын оның тек бір жақ шетінде ғана мүмкін.

Стек класы динамикалық коллекция – бір типтегі деректердің бірігуі түрінде бола алады. Стекті кеңейткен кезде («толтырылған» стекке элементті қосу барысында) стек сыйымдылығы динамикалық түрде екі есе үлкейеді.

Stack класында келесі үш конструктор анықталған:

Public Stack();

Public Stack(int capacity);

Public Stack(ICollection n);

Бірінші конструктор 10 элементтен тұратын «бос» стекті құрады. Екінші конструктор сыйымдылығы capacity болатын «бос» стекті құрады. Үшінші конструктор n элементті стекті құрады.

11.1-кестеде Stack класының негізгі әдістері ұсынылған.


11.1-кесте – Stack класының негізгі әдістері

Әдіс

Сипатама

public virtual bool Contains(object v)

True мәнін қайтарылады, егер v объектісі стекте болса, әйтпесе false мәні қайтарылады.

public virtual void Clear()

Стекті тазартады (Count қасиеті – стек элементтерінің саны нөлге теңестіріледі).

public virtual object Peek()

Стек төбесінің элементін қайтарады, бірақ оны жоймайды.

public virtual object Pop()

Стек төбесінің элементін қайтарады және оны жояды.

public virtual void Push(object v)

v элементін стекке қосады - стек төбесіне

Стек ішіндегісін көру үшін in операциясы жиі қолданылады, мысалы:

Console.Write("Стек ішіндегісі = ");

foreach (int i in vst)

Console.Write(i + " ");

Console.WriteLine();

Кодтың көрсетілген жолдары vst төбесінен және бүтін сандардан тұратын стекті қарап шығуға мүмкінді береді.

Стектермен жұмыс жасайтын алгоритмнің мысалы ретінде келесі есепті қарастырайық:

11.1-есебі. 5 бүтін саннан тұратын стек үшін санды қосу және шығару ықтималдығы кездейсоқ құрылады. Бұл орайда санды стекке қосу ықтималдығы 70% тең, ал стектен шығару 30% тең. Сандар кездейсоқ құрылады және минус 50 мен 50 аралығында болады.

Стекті толтыру барасында және стекке жаңа санды қосу кезінде, шығару ықтималдықтары қарама-қарсы мәндерге өзгереді. Бағдарлама жұмысының соңы санды «бос» стектен шығару мүмкіндігімен анықталады.

Бағдарламаның коды:

using System;

using System.Collections;

namespace ConsoleApplication1

{

class Program



{

static void vkl(Stack vst, int n)

{

vst.Push(n);



Console.Write("Stekke element zhazildi - {0}", n);

Console.Write("Stekte zhazildi = ");

foreach (int i in vst)

Console.Write(i + " ");

Console.WriteLine();

}

static void iskl(Stack vst)



{

if (vst == null) Console.WriteLine("Stek bos!");

else

{

int n = (int)vst.Pop();



Console.Write("Stekten element zhoildi {0}", n);

Console.Write("Stekte zhazildi = ");

foreach (int i in vst)

Console.Write(i + " ");

Console.WriteLine();

}

}



static void Main()

{

Stack vstek = new Stack();



int i, k, n;

Random rnd = new Random();

i = 0;

while (i < 5)



{

k = rnd.Next() % 101;

if (k <= 70)

{

i++;



n = rnd.Next() % 101 - 50;

vkl(vstek, n);

}

else


if (i > 0)

{

i--;



iskl(vstek);

}

}



Console.WriteLine("Stek tolik!");

while (i > 0)

{

k = rnd.Next() % 101;



if (k <= 30)

{

i++;



n = rnd.Next() % 101 - 50;

vkl(vstek, n);

}

else


if (i > 0)

{

i--;



iskl(vstek);

}

}



Console.WriteLine("Stek bos!");

Console.WriteLine("Enter pernesin basiniz");

Console.ReadLine();

}

}



}

Бағдарлама жұмысы:

Stekke element zhazildi - -6Stekte zhazildi = -6

Stekke element zhazildi - 12Stekte zhazildi = 12 -6

Stekke element zhazildi - 11Stekte zhazildi = 11 12 -6

Stekten element zhazildi 11Stekte zhazildi = 12 -6

Stekke element zhazildi - -8Stekte zhazildi = -8 12 -6

Stekke element zhazildi - -24Stekte zhazildi = -24 -8 12 -6

Stekke element zhazildi - 14Stekte zhazildi = 14 -24 -8 12 -6

Stek tolik!

Stekten element zhoildi 14Stekte zhazildi = -24 -8 12 -6

Stekten element zhoildi -24Stekte zhazildi = -8 12 -6

Stekten element zhoildi -8Stekte zhazildi = 12 -6

Stekten element zhoildi 12Stekte zhazildi = -6

Stekke element zhazildi - -27Stekte zhazildi = -27 -6

Stekke element zhazildi - -13Stekte zhazildi = -13 -27 -6

Stekten element zhoildi -13Stekte zhazildi = -27 -6

Stekten element zhoildi -27Stekte zhazildi = -6

Stekten element zhoildi -6Stekte zhazildi =

Stek bos!

Enter pernesin basiniz
Бағдарламада стекке элементті қосу және одан элементті шығару операцияларының әрқайсысына түсініктеме қосылған.


жүктеу 1,63 Mb.

Достарыңызбен бөлісу:
1   ...   54   55   56   57   58   59   60   61   ...   73




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау