|
Московский технологический институт «ВТУ». Курсовая работа по дисциплине «Программирование на языкеМосковский технологический институт «ВТУ» Курсовая работа по дисциплине «Программирование на языке высокого уровня» на тему: «Динамические структуры данных. Организация данных в списковые структуры» (1000 руб.) Оригинальность 87% ап ру Содержание Введение. 3 Глава 1. Языки программирования высокого уровня. Классификация структуры данных 5 1.1. Языки программирования высокого уровня, их классификация. 5 1.2.Классификация структур данных. 8 1.3. Cущность понятия динамическая структура данных и ее характеристика 10 Глава 2. Организация данных в списковые структуры.. 17 2.1. Списки и списочные структуры.. 17 2.2. Связные линейные списки. Реализация операций над связными линейными списками 23 2.3. Нелинейные разветвленные списки. 26 2.4. Представление списковых структур в памяти и операции обработки списков 28 2.5. Структура данных - Очередь. 30 2.6. Стек. 34 Заключение. 40 Список использованной литературы.. 42 Нелинейнымᅟ разветвленнымᅟ спискомᅟ являетсяᅟ список,ᅟ элементамиᅟ которогоᅟ могутᅟ бытьᅟ тожеᅟ списки.ᅟ Еслиᅟ вᅟ 2-связномᅟ спискеᅟ одинᅟ изᅟ указателейᅟ каждогоᅟ элементаᅟ спискаᅟ задаетᅟ порядокᅟ обратныйᅟ кᅟ ᅟ порядку,ᅟ устанавливаемомуᅟ другимᅟ указателем,ᅟ тоᅟ такойᅟ двусвязныйᅟ списокᅟ будетᅟ линейным.ᅟ Еслиᅟ жеᅟ одинᅟ изᅟ указателейᅟ задаетᅟ порядокᅟ ᅟ произвольногоᅟ ᅟ вида,ᅟ ᅟ неᅟ являющийсяᅟ обратнымᅟ поᅟ отношениюᅟ кᅟ порядку,ᅟ устанавливаемомуᅟ другимᅟ указателем,ᅟ тоᅟ такойᅟ списокᅟ будетᅟ нелинейным. Очередьᅟ какᅟ структураᅟ данныхᅟ понятнаᅟ дажеᅟ людям,ᅟ неᅟ знакомымᅟ сᅟ программированием.ᅟ [17]ᅟ Очередьᅟ содержитᅟ элементы,ᅟ какᅟ быᅟ выстроенныеᅟ другᅟ заᅟ другомᅟ вᅟ цепочку.ᅟ Уᅟ очередиᅟ естьᅟ началоᅟ иᅟ конец.ᅟ Добавлятьᅟ новыеᅟ элементыᅟ можноᅟ толькоᅟ вᅟ конецᅟ очереди,ᅟ забиратьᅟ элементыᅟ можноᅟ толькоᅟ изᅟ начала.ᅟ Вᅟ отличиеᅟ отᅟ обычнойᅟ очереди,ᅟ которуюᅟ всегдаᅟ можноᅟ приᅟ желанииᅟ покинуть,ᅟ изᅟ серединыᅟ программистскойᅟ очередиᅟ удалятьᅟ элементыᅟ нельзя. Очередьᅟ можноᅟ представитьᅟ вᅟ видеᅟ трубки.ᅟ Вᅟ одинᅟ конецᅟ трубкиᅟ можноᅟ добавлятьᅟ шарикиᅟ —ᅟ элементыᅟ очереди,ᅟ изᅟ другогоᅟ концаᅟ ониᅟ извлекаются.ᅟ Элементыᅟ вᅟ серединеᅟ очереди,ᅟ т.е.ᅟ шарикиᅟ внутриᅟ трубки,ᅟ недоступны.ᅟ Конецᅟ трубки,ᅟ вᅟ которыйᅟ добавляютсяᅟ шарики,ᅟ соответствуетᅟ концуᅟ очереди,ᅟ конец,ᅟ изᅟ которогоᅟ ониᅟ извлекаютсяᅟ —ᅟ началуᅟ очереди.ᅟ Такимᅟ образом,ᅟ концыᅟ трубкиᅟ неᅟ симметричны,ᅟ шарикиᅟ внутриᅟ трубкиᅟ движутсяᅟ толькоᅟ вᅟ одномᅟ направлении.ᅟ Вᅟ принципе,ᅟ можноᅟ былоᅟ быᅟ разрешитьᅟ добавлятьᅟ элементыᅟ вᅟ обаᅟ концаᅟ очередиᅟ иᅟ забиратьᅟ ихᅟ такжеᅟ изᅟ обоихᅟ концов.ᅟ Такаяᅟ структураᅟ данныхᅟ вᅟ программированииᅟ тожеᅟ существует,ᅟ ееᅟ названиеᅟ —ᅟ "дек",ᅟ отᅟ англ.ᅟ Doubleᅟ Endedᅟ Queue,ᅟ т.е.ᅟ очередьᅟ сᅟ двумяᅟ концами.ᅟ Декᅟ применяетсяᅟ значительноᅟ реже,ᅟ чемᅟ очередь. Использованиеᅟ очередиᅟ вᅟ программированииᅟ почтиᅟ соответствуетᅟ ееᅟ ролиᅟ вᅟ обычнойᅟ жизни.ᅟ Очередьᅟ практическиᅟ всегдаᅟ связанаᅟ сᅟ обслуживаниемᅟ запросов,ᅟ вᅟ техᅟ случаях,ᅟ когдаᅟ ониᅟ неᅟ могутᅟ бытьᅟ выполненыᅟ мгновенно.ᅟ Очередьᅟ поддерживаетᅟ такжеᅟ порядокᅟ обслуживанияᅟ запросов.ᅟ Рассмотрим,ᅟ кᅟ примеру,ᅟ чтоᅟ происходит,ᅟ когдаᅟ человекᅟ нажимаетᅟ клавишуᅟ наᅟ клавиатуреᅟ компьютера.ᅟ Темᅟ самымᅟ человекᅟ проситᅟ компьютерᅟ выполнитьᅟ некотороеᅟ действие.ᅟ Например,ᅟ еслиᅟ онᅟ простоᅟ печатаетᅟ текст,ᅟ тоᅟ действиеᅟ должноᅟ состоятьᅟ вᅟ добавленииᅟ кᅟ тестуᅟ одногоᅟ символаᅟ иᅟ можетᅟ сопровождатьсяᅟ перерисовкойᅟ областиᅟ экрана,ᅟ прокруткойᅟ окна,ᅟ переформатированиемᅟ абзацаᅟ иᅟ т.п. Любая,ᅟ дажеᅟ самаяᅟ простая,ᅟ операционнаяᅟ системаᅟ всегдаᅟ вᅟ тойᅟ илиᅟ инойᅟ степениᅟ многозадачна.ᅟ Этоᅟ значит,ᅟ чтоᅟ вᅟ моментᅟ нажатияᅟ клавишиᅟ операционнаяᅟ системаᅟ можетᅟ бытьᅟ занятаᅟ какой-либоᅟ другойᅟ работой.ᅟ Темᅟ неᅟ менее,ᅟ операционнаяᅟ системаᅟ ниᅟ вᅟ какойᅟ ситуацииᅟ неᅟ имеетᅟ праваᅟ проигнорирооватьᅟ нажатиеᅟ наᅟ клавишу.ᅟ Поэтомуᅟ происходитᅟ прерываниеᅟ работыᅟ компьютера,ᅟ онᅟ запоминаетᅟ своеᅟ состояниеᅟ иᅟ переключаетсяᅟ наᅟ обработкуᅟ нажатияᅟ наᅟ клавишу.ᅟ Такаяᅟ обработкаᅟ должнаᅟ бытьᅟ оченьᅟ короткой,ᅟ чтобыᅟ неᅟ нарушитьᅟ выполнениеᅟ другихᅟ задач.ᅟ Команда,ᅟ отдаваемаяᅟ нажатиемᅟ наᅟ клавишу,ᅟ простоᅟ добавляетсяᅟ вᅟ конецᅟ очередиᅟ запросов,ᅟ ждущихᅟ своегоᅟ выполнения.ᅟ Послеᅟ этогоᅟ прерываниеᅟ заканчивается,ᅟ компьютерᅟ восстанавливаетᅟ своеᅟ состояниеᅟ иᅟ продолжаетᅟ работу,ᅟ котораяᅟ былаᅟ прерванаᅟ нажатиемᅟ наᅟ клавишу.ᅟ Запрос,ᅟ поставленныйᅟ вᅟ очередь,ᅟ будетᅟ выполненᅟ неᅟ сразу,ᅟ аᅟ толькоᅟ когдаᅟ наступитᅟ егоᅟ черед. Вᅟ системеᅟ Windowsᅟ работаᅟ оконныхᅟ приложенийᅟ основанаᅟ наᅟ сообщениях,ᅟ которыеᅟ посылаютсяᅟ этимᅟ приложениям.ᅟ Например,ᅟ бываютᅟ сообщенияᅟ оᅟ нажатииᅟ наᅟ клавишуᅟ мыши,ᅟ оᅟ закрытииᅟ окна,ᅟ оᅟ необходимостиᅟ перерисовкиᅟ областиᅟ окна,ᅟ оᅟ выбореᅟ пунктаᅟ менюᅟ иᅟ т.п.ᅟ Каждаяᅟ программаᅟ имеетᅟ очередьᅟ запросов.ᅟ Когдаᅟ программаᅟ получаетᅟ свойᅟ квантᅟ времениᅟ наᅟ выполнение,ᅟ онаᅟ выбираетᅟ очереднойᅟ запросᅟ изᅟ началаᅟ очередиᅟ иᅟ выполняетᅟ его.ᅟ Такимᅟ образом,ᅟ работаᅟ оконногоᅟ приложенияᅟ состоит,ᅟ упрощенноᅟ говоря,ᅟ вᅟ последовательномᅟ выполненииᅟ запросовᅟ изᅟ ееᅟ очереди.ᅟ Очередьᅟ поддерживаетсяᅟ операционнойᅟ системой. Подходᅟ кᅟ программированию,ᅟ состоящийᅟ неᅟ вᅟ прямомᅟ вызовеᅟ процедур,ᅟ аᅟ вᅟ посылкеᅟ сообщений,ᅟ которыеᅟ ставятсяᅟ вᅟ очередьᅟ запросов,ᅟ имеетᅟ многоᅟ преимуществᅟ иᅟ являетсяᅟ однойᅟ изᅟ чертᅟ объектно-ориентированногоᅟ программирования.ᅟ Так,ᅟ например,ᅟ еслиᅟ оконнойᅟ программеᅟ необходимоᅟ завершитьᅟ работуᅟ поᅟ какой-либоᅟ причине,ᅟ лучшеᅟ неᅟ вызыватьᅟ сразуᅟ командуᅟ завершения,ᅟ котораяᅟ опасна,ᅟ потомуᅟ чтоᅟ нарушаетᅟ логикуᅟ работыᅟ иᅟ можетᅟ привестиᅟ кᅟ потереᅟ данных.ᅟ Вместоᅟ этогоᅟ программаᅟ посылаетᅟ самойᅟ себеᅟ сообщениеᅟ оᅟ необходимостиᅟ завершенияᅟ работы,ᅟ котороеᅟ будетᅟ поставленоᅟ вᅟ очередьᅟ запросовᅟ иᅟ выполненоᅟ послеᅟ запросов,ᅟ поступившихᅟ ранее.ᅟ Рассмотримᅟ реализациюᅟ очередиᅟ наᅟ базеᅟ массива.ᅟ Какᅟ ужеᅟ былоᅟ сказано,ᅟ программистуᅟ массивᅟ данᅟ свыше,ᅟ всеᅟ остальныеᅟ структурыᅟ данныхᅟ нужноᅟ реализовыватьᅟ наᅟ егоᅟ основе.ᅟ Конечно,ᅟ такаяᅟ реализацияᅟ можетᅟ бытьᅟ многоэтапной,ᅟ иᅟ неᅟ всегдаᅟ массивᅟ выступаетᅟ вᅟ качествеᅟ непосредственнойᅟ базыᅟ реализации.ᅟ Вᅟ случаеᅟ очередиᅟ наиболееᅟ популярныᅟ двеᅟ реализации:ᅟ непрерывнаяᅟ наᅟ базеᅟ массива,ᅟ которуюᅟ называютᅟ такжеᅟ реализациейᅟ наᅟ базеᅟ кольцевогоᅟ буфера,ᅟ иᅟ ссылочнаяᅟ реализация,ᅟ илиᅟ реализацияᅟ наᅟ базеᅟ списка.ᅟ Ссылочныеᅟ реализацииᅟ будутᅟ рассмотреныᅟ ниже. Нужен полный текст данного материала? Напиши заявку cendomzn@yandex.ru |
|