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

5 Сурет

Компоненттерді кезекке қосу кезектің соңына жүргізіледі (6-сурет):

6-сурет.

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

Кзектен компонентті таңдау кезектің басынан бастап жүзеге асырылады, сонымен бір мезгілде компонент кезектен шығарылады. ЭЕМ жадында үш элементтен тұратын кезек қалыптастырылды деп алайық:

7-сурет.

Компонентті таңдау келесідей операторлармен орындалады:

Dl:=pBegin^.D;

pBegin:=pBegin^.pNext;

8-сурет.

11 Дәріс тақырыбы: Тізбекті үлестіру. Байланысқан үлестіру.

Программалауда көбінесе алгоритмді орындау процесінде ауысып отыратын жиындармен жұмыс жасауға тура келеді. Өзгермелі (динамикалық) жиындарды сақтауға арналған деректер құрылымын қарастырамыз.

Түрлі алгоритмдер түрлі операцияларды пайдаланады. Мысалы, тек қана жиынға элементтер қосу және алып тастау, сондай-ақ осы элементтің жиынға тиістілігін тексеру талап етіледі. Мұндай операцияларды қолдайтын деректер құрылымы сөздік деп аталады. Басқа жағдайларда барынша күрделі операциялар қажет болуы мүмкін. Мысалы, артықшылығы бар кезектер ең кіші элементті (элементтер қосудан басқа) таңдауға және алып тастауға мүмкіндік береді, рұқсат етеді. Динамикалық жиынды жүзеге асыруды таңдау онымен қандай операциялар жасау қажет етілетініне байланысты екені түсінікті.

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

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

2. Деректермен жасалатын күрделі операциялардың көптігі. Бұл түрдегі программаларда деректермен енгізу және шығарып тастаудың көптеген операциялары орындалады.

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

Деректердің құрылымы тізбектеп ұсынған кезде сызықтық реттелген, және реттің бұл қатынасы тізбекті үлестіру принципін қолдану нәтижесінде жадының сәйкес құрылымында сақталды. Әрбір элемент үшін одан кейінгі элементтің жағдайын арнайы анықтау қажеттілігі болмады.

Түрлі ұзындықтағы элементтерден тұратын тізімді қарастырамыз. Ерікті элементтің адресін тура есептеумен алу есебі бірден барынша күрделене түседі. Тізімнің торабының (элементінің) адресін алудың анық тәсілі осы адресті жадыда сақтау болып табылады. Адрестеудің бұл тәсілі нұсқағыштардың көмегімен адрестеу немесе сілтемелі адрестеу деп аталады. Егер қарастырылып отырған тізім п тораптардан тұрса, онда әрбір тораптың адресін ұзындығы п векторда сақтауға болады. Вектордың бірінші элементі тізімнің бірінші торабының адресін, ал екінші элементі – екінші тораптың адресін және т.б. қамтиды.

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

Нұсқағышты адрес сияқты интерпретациялау барынша қарапайым болады. Компьютерлердің көпшілігінде адрестер орындауға жататын келесі команданы және оның операндасын (операндаларын) табу үшін қолданылады. Көптеген аппаратуралық жүзеге асыруларда мұндай адрестерді сақтау үшін арнайы регистрлер қолданылады.

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

Жадыны тізбектеп үлестіру кезінде кез-келген элементтің адресін егер жадының құрылымы белгілі және толық анықталған түрге ие болған жағдайда ғана есептеуге болады. Нұсқағыштар оның ұйымдастырылуына қарамастан құрылымға сілтеме жасауға мүмкіндік береді. Басқаша айтқанда нұсқағыштар сызықтық реттің қатынасына қарағанда құрылымның элементтері арасында барынша күрделі қатынастарды беруге мүмкіндік береді.

Деректердің сызықтық-реттелген құрылымының элементтеріне ауысу кезінде нұсқағыштарды немесе сілтемелерді пайдалану сызықтық реттілік мағынасында аралас элементтер жадының аралас учаскелерінде міндетті емес физикалық орналасатынын білдіреді. Үлестірудің бұл түрі байланысқан деп аталады.