Сурет 1: Стек
Мысал:
interface Stack {
boolean empty(); //Стек бос па?
void clear(); // Стекті босату.
void push(int val); // Стекке сан қосу (басына).
int pop() throws Exception; // Стектің басындағы санды өшіру.
int top() throws Exception; // Стектің басын алу (өшірмей).
}
Бос стектен элемент алуға болмайды.
Кезек – соңынан басына қарай өтетін тек бір бағытта бағытталған екі шеті бар труба ретінде қарастыруға болады. Кезек FIFO қызметін жүзеге асырады (First in – first out, бірінші келген – бірінші кетеді.)
Мысал:
interface Queue {
boolean empty(); // Кезек бос па?
void clear(); // Кезекті босату.
void push(int val); // Кезекке сан қосу (соңына).
int pop() throws Exception; // Кезектің басынан санды өшіру
int front() throws Exception; // Кезектің басын алу(өшірмей).
}
Бос кезектен стектен сияқты элемент алуға болмайды.
Дек – (double ended queue, екі жақты кезек) –стек пен кезектің симбиозы. Бір бірінен тәуелсіз жұмыс жасауға болатын екі шеті ашық труба ретінде елестетуге болады.
Мысал:
interface Deq {
boolean empty(); // Дек бос па?
void clear(); // Декті босату.
void pushFront(int val); // Дектің басына сан қосу.
void pushBack(int val); // Дектің соңына сан қосу.
int popFront() throws Exception; // Дектің бірінші элементін өшіру.
int popBack() throws Exception; // Дектің соңғы элементін өшіру.
int front() throws Exception; // Дектің бірінші элементін алу (өшірмей).
int back() throws Exception; // Дектің соңғы элементін алу (өшірмей).
}
L2-тізім – сызықты екі байланысты тізім – жіпке өткізілген моншақ ретінде елестетуге болады. Тізім үшін оның басы және соңы, сондай-ақ көрсеткіш анықталған. Көрсеткіш әр уақытта тізім элементтерінің арасында болады. Төмендегі мысалды көрсетілгендей тізімге элементті қосу немесе жою тек көрсеткіштің қасында ғана орындалады.
Мысал:
interface L2List {
boolean empty(); // Тізім бос па?
void clear(); // Тізімді босату.
void toFront(); // Көрсеткішті тізімнің басына жылжыту.
void toBack(); // Көрсеткішті тізімнің соңына жылжыту.
boolean begin(); // Көрсеткіш тізімнің басында ма?
boolean end(); // Көрсеткіш тізімнің соңында ма?
void forward() throws Exception; // Көрсеткішті алдыға жылжыту.
void backward() throws Exception; // Көрсеткішті артқа жылжыту.
int after() throws Exception; // Көрсеткіштен кейін сан алу;
int before() throws Exception; // Көрсеткіштің алдында сан алу;
void insertBack(int val); // Көрсеткіштен кейін сан қосу;
void insertFront(int val); // Көрсеткіштің алдында сан қосу;
int eraseBack() throws Exception; // Көрсеткіштен кейінгі санды өшіру .
int eraseFront() throws Exception; // Көрсеткіштің алдындағі санды өшіру.
}
Мысал: Элемент бойынша өңдеу процедурасымен контейнерлік класс.
Сан – Жол – Таблица иерархия кластарына жататын сұрыпталған элементтер тізімі базасында контейнер жасау керек болсын. Кластар структурасын кезең бойынша құрамыз. Иерархия кластарының негізіне Тізім – Элемент кластарын саламыз.
Бұл екі класс басқарылатын объектілері Элемент класынан алынған контейнерлік класттарды құрады. Тізім класы Элемент класының элемент-объектілер көрсеткіші: бірінші элементке көрсеткіш, соңғы элементке көрсеткіш және ағымдағы элементке көрсететін үш өрістерден тұрады. Элемент класы келесі және алдыңғы тізім элементтерінің адресін сақтайтын, сол кластағы элемент көрсеткіштерінен тұратын екі өрістен тұрады.
Содан соң осы класттардың базасында Сұрыпталған тізім абстрактілі контейнерлік класын құрамыз. Онда элементтерді салыстыратын ішкі шақырылатын әдіс Compare-мен Sort сұрыптау әдісі қарастырылған. Бұл ішкі салыстыру әдісі осы кластың базасында әр түрлі сұрыптауларды қолдануға болатын басқа класттарды құруға мүмкіндік береді.
Достарыңызбен бөлісу: |