Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмдеу жане багдарламалау негиздери 4 г.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.73 Mб
Скачать

10 Дәріс тақырыбы: Ақпараттық құрылымдар. Стектер, кезектер.

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

Көбінесе деректер құрылымының есептерді шешу барысында өз өлшемдерін өзгертуі талап етіледі. Деректердің мұндай құрылымы динамикалық деп аталады, оларға стектер, кезектер, тізімдер, бұтақтар мен тағы басқалары жатады. Жиымдардың, жазбалар мен файлдардың көмегімен динамикалық құрылымын суреттеу ЭЕМ жадын тиімсіз пайдалануға әкеліп соқтырады және есептерді шешу уақытын көбейтеді.

Кез-келген динамикалық құрылымның әрбір компоненті кем дегенде екі өрістен тұратын: бір өріс нұсқағыш түрінде, ал екіншісі – деректерді орналастыруға арналған жазба болып табылады. Жалпы жағдайда жазбада бір емес, бірнеше нұсқағыштар және бірнеше деректер өрісі бола алады. Деректер өрісі айнымалы, жиым, жиын немесе жазба болуы мүмкін.

А лға қарай қарау үшін

түріндегі бөлек компонентті ұсынамыз.

мұнда Р өрісі – нұсқағыш; D өрісі – деректер.

сы компоненттің сипаттамасын былайша береміз:

type

Pointer=^Comp;

Comp = record D: T; pNext:Pointer end;

мүнда Т – деректер түрі.

тек, кезек түріндегі деректердің динамикалық құрылымдарымен жұмыстың негізгі ережелерін берілген сипаттамадағы компоненттерге сүйене отырып, қарастырамыз.

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

var pTop, pAux: Pointer;

мұнда pTop — стектің төбесін көосеткіш;

p Aux — көмекші көрсеткіш.

Бастапқы стекті қалыптастыру келесі операторлар арқылы орындалады: (1 сурет):

N ew(pTop);

pTop

р Тор^.pNext:=NIL;

pTop

р Тор^.D:=D1;

pTop

1 Сурет

Соңғы оператор немесе операторлар тобы бірінші компоненттің деректер өрісінің ішіндегісін жазып алады. Стекке компоненттер қосу көмекші көрсеткішті пайдалана отырып жүргізіледі (2-сурет):

2 Сурет

Келесі компонентті қосу осылайша жүргізіледі.

Стектен компонент таңдау процесін қарастырамыз. Таңдау алдында стек үш компоненттен тұрады деп аламыз (3-сурет):

3 сурет

Бірінші оператор немесе операторлар тобы стектің төбесі-компоненттерден деректерді оқуды жүзеге асырады. Екінші оператор стек төбесінің мәнін өзгертеді (4-сурет):

D 3:=рор^.D;

рТор:=рТор^.pNext;

4 Сурет

Суреттен көріп отырғанымыздай компонент оқу кезінде стектен шығарып тасталады.

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

type

PComp=^Comp;

Comp=record D: Т ;

pNext:PComp

end;

var

pBegin, pEnd, pAux: PComp;

мұнда pBegin — кезектің басын көрсеткіш, pEnd — кезектің соңын көрсеткіш, pAux — көмекші көрсеткіш.

Т типі кезек компоненттерінің деректер түрін анықтайды. Кезекті бастапқы қалыптастыру келесідей операторлармен орындалады (5-сурет):