1.2. Жадыны байланыстыра бөлу
Сызықты тізімді байланыстыра бөлу байланысқан тізім деп аталады. Құрылымды құру үшін жадыны байланыстыра бөлу кезінде көрсеткіштер көмегімен элементтерді іздеу қатынасын беру қажет. Көрсеткіштерге мәлімет жазбаларында сақталған адрестер жатады. Адрестік функция көмегімен келесі элементтің адресі есептелетін жадыны тізбектей бөлуге қарағанда адрестік функция мәнін жадыны байланыстыра бөлу кезінде сақталған көрсеткіштерді көру жолымен ғана алуға болады. Жадыны бөлудің мұндай әдісі ЭЕМ жадында деректердің өзін ауыстырмай-ақ деректер құрылымын ұлғайтуға және қысқартуға мүмкіндік береді. Бірақ жадыны тізбектей бөлумен салыстырғанда құрылымды сақтау үшін көп жады қажет.
Байланысқан бөлу - өте қиын, бірақ сызықты тізімді сақтаудың иілгіш әдісі. Әрбір торап құрамында тізімнің басқа тораптарына көрсеткіштері бар. Байланыстыра бөлу кезінде жадының реттелген элементтерінде тізімнің сақталғанын қажет етпейді. Сақтаудың берілген әдісінде байланыс адрестерінің бар болуы жадының кез келген бос жерінде жеке тізім тораптарын орналастыруға мүмкіндік береді. Тізімнің сызықты құрылымы көрсеткіштермен қамтамасыз етіледі.
Байланысқан тізім келесідей өндірілуі мүмкін:
Қарастырылып отырған тізімдердің негізгі кемшілігі ақпаратты іздеудің төмен тиімділігі болып табылады (қажет торапты іздеу үшін тораптардың жеткілікті үлкен санын көру қажет болуы мүмкін).
өткізу мүмкіндігі бар тізім – мұнда сызықты тізім өзара кері көрсеткіштермен байланысқан тораптар тобына бөлінеді. Басында қажет торап табылатын топқа кері көрсеткіш бойынша кіру жүзеге асады, ал содан кейін түзу көрсеткіштер бойынша қажет торап табылмағанша топтың торабы іріктеледі. Топтың оптималды өлшемін табайық. Топтар саны анық
Қажет торапқа кіру кезінде топтар ішінен торапты табу үшін орташа тобын, ал әрбір топта - қарап шығу керек. Демек, көріністердің жалпы саны
Әрбір топта элементтер саны минималды
Алынған мәнді нөлге теңестіре отырып, аламыз.
Тізімдердің қарастырылған типін өндірудің басқа әдісі арнайы қосымша сызықты тізім - әрбір топтың бірінші торабының мәні мен адресі бар индекс құру болып табылады.
Бұл жағдайда тізімнің арнайы торабын - head (басы) құру және оны арнайы тіркелген ұяшықта сақтау керек. Бұл торапқа тізімнің бірінші элементіне көрсеткіш, сонымен қатар тізімді өңдеу (идентификатор, тізімдегі тораптар саны және т.с.с.) үшін арналған қызметші ақпарат орналасады.
Ең кең тараған циклдік тізімдер (бір жаққа бағытталған және екі жаққа бағытталған) болып табылады. Сонымен қатар байланыс тізімнің соңғы элементінен бірінші элементіне және бірінші элементтен соңғысына қарай жүреді. Циклдік тізімдер тізімнің кез келген торабына кіруді қамтамасыз етуге мүмкіндік береді.
Практикалық өндіру үшін көрсеткіштердің үш типі пайдаланылады:
қатысты адрес – жазбаларды жадының кез келген жеріне және көрсеткіштер мәнін өзгертпей әртүрлі құрылғыларға орналастыруға мүмкіндік береді, сонымен қатар тізім орнын ауыстыру кезінде жазбадағы көрсеткіштер өзгермейді, ал нақты адресті есептеу кезінде базалық адрес қана өзгереді.;
символдық адрес (идентификатор) – тізімді түгелдей, сонымен қатар бір-біріне қатысты оның жеке жазбаларының орнын ауыстыруға мүмкіндік береді. Тізімнің барлық қалған жазбаларынан көрсеткіштерді өзгертпей тізімге жазбаларды қосуға және жоюға мүмкіндік береді.
Достарыңызбен бөлісу: |