|
| |||
Реферат: Двунаправленный динамический списокЗадание Реализовать базу данных на основе двунаправленного динамического списка, содержащего фамилию, имя, отчество человека, дату его рождения и знак зодиака по западному календарю. В программном изделии предусмотреть работу со списком, которая
включает в себя: Написать программное изделие на двух языках программирования: C, Описание алгоритма программы со структурой данных Взаимодействие программы с пользователем должно быть реализовано по следующему алгоритму: Выбор из главного меню одной из следующих функций: а) Добавить; б) Удалить; в) Просмотреть; г) Сортировать; д) Выход. После выполнения каждой функции необходимо обеспечить возврат в главное меню и выбор любой другой функции. При выборе функции «Выход» работа программы завершается. При выборе функции «Добавить», выделяется память для хранения данных, затем пользователю предлагается ввести фамилию, имя, отчество и дату рождения человека, эти данные заносятся в память, после чего автоматически определяется знак зодиака по западному календарю и заносится в память. При выборе функции «Удалить», проверяется наличие данных в списке. При выборе функции «Просмотреть», поверяется наличие данных в списке. При выборе функции «Сортировать», происходит сортировка списка по фамилии. Если в списке встречаются две одинаковые фамилии, тогда сравниваются имена; при совпадении имён сравниваются отчества. Описание программы Для реализации динамического списка в программе применён тип
указателей, указывающий на запись ”Inform”, содержащую фамилию ”fam”, имя С помощью этого типа ”Ukazat” описаны переменные: “temp” – для
хранения указателя на текущий элемент; “first” – для хранения указателя на
первый элемент в списке; “cut” – для хранения на последний элемент в
списке. Переменная “ch” используется для выбора процедуры; “s1”, “s2”, “n” Программа начинает выполняться с присвоения указателю на первый
элемент (first) значения “nil”. После этого пользователю предлагается
выбрать действие: «1-Добавить», «2-Удалить», «3-Просмотреть», «4- Процедура добавления “Dobav”. Сначала выделяется память под текущий элемент (new(temp)), затем в
этот элемент записывается фамилия, имя, отчество и дата рождения. По дате
рождения вычисляется знак зодиака. Для этого в s2 записывается число
рождения, а в s1 первые три буквы месяца рождения, затем, путём сравнения
этих переменных с числами и частями слов находится соответствующий знак
зодиака, и заносится в текущий элемент. После ввода информации, проверяется
наличие элементов в списке. Если они отсутствуют, то в текущем элементе,
указателям на следующий (next) и предыдущий (prev) элементы присваивается
значение “nil”; а указатель на сам элемент (temp) присваивается указателям
на первый (first) и последний (cut) элементы в списке. Если список не
пустой, то в текущем элементе, указателю на следующий элемент (next)
присваивается значение “nil”, а указателю на предыдущий элемент (prev)
присваивается указатель на последний элемент (cut) в списке; а указателю на
следующий элемент (next) последнего элемента в списке и указателю на
последний элемент (cut) присваивается указатель на текущий элемент (temp). Процедура удаления “Udal”. В этой процедуре сначала проверяется наличие элементов в списке. Если
список пуст, то выводится сообщение: «Таблица пуста». Если же список
содержит элементы, то пользователю предлагается ввести фамилию, имя и
отчество удаляемого, записывая их в ffam, fname, ffanem соответственно. Если указатели на первый (first) и последний (cut) элементы не равны,
то происходит поиск местонахождения элемента в списке. Если внутри текущего
элемента указатель на предыдущий элемент (prev) равен nil, тогда указателю
на предыдущий элемент (prev) внутри следующего за текущим элементом
присваивается указатель на предыдущий элемент внутри текущего, а указателю
на первый элемент (first) в списке присваивается указатель на следующий
элемент. Если внутри текущего элемента указатель на следующий элемент Если же указатели на первый (first) и последний (cut) элементы равны, то указателю на первый элемент в списке (first) присваивается nil. После некоторых преобразований внутри списка происходит освобождение памяти текущего элемента (dispose(temp)). На этом процедура удаления завершается. Процедура просмотра “Prosm”. Эта процедура выполняет вывод содержимого списка в виде таблицы. Сначала на дисплей выводится шапка таблицы, содержащая: «Фамилия Имя Если список содержит элементы, то происходит их построчный вывод. Это
реализовано с помощью цикла, который выполняется, пока указатель на текущий
элемент (temp) не переберёт все элементы списка. В цикле вычисляется длина
фамилии, имени и отчества, после чего они выводятся на дисплей, а за ними
выводятся дата рождения и знак зодиака; затем указателю на текущий элемент Если список окажется пуст, то выводится сообщение: «Таблица пуста». После завершения цикла или вывода сообщения, процедура просмотра завершается. Процедура сортировки “Sortir”. Для этой процедуры применена локальная переменная “tmp” типа “ukazat”. Если список содержит элементы, то переменной “m” присваивается
значение “true”, затем выполняется цикл, пока “m=true”. В цикле переменной Если текущий элемент окажется больше чем следующий за ним элемент,
тогда переменной “m” присваивается значение “true”, и проверяется
местонахождение текущего элемента в списке. Если он окажется в начале
списка, то указателю на первый элемент в списке (first) присваивается
указатель на следующий элемент за текущим, а иначе указателю на следующий
элемент (next) внутри предыдущего перед текущим элементом присваивается
указатель на следующий элемент внутри текущего. Если же текущий элемент
окажется в конце списка, тогда указателю на последний элемент в списке
присваивается указатель на текущий элемент, а локальной переменной “tmp”
присваивается значение “nil”, а иначе указателю на предыдущий элемент Переменной “m” снова присваивается значение “false”, а указателю на текущий элемент (temp) присваивается указатель на последний элемент в списке (cut), и выполняется ещё один вложенный цикл, пока указатель на предыдущий элемент внутри текущего не равен “nil”. В этом цикле проверяется какой элемент меньше. Если текущий элемент окажется меньше чем предыдущий перед ним элемент,
тогда переменной “m” присваивается значение “true”, и проверяется
местонахождение текущего элемента в списке. Если он окажется в конце
списка, то указателю на последний элемент в списке (cut) присваивается
указатель на предыдущий элемент перед текущим, а иначе указателю на
предыдущий элемент (prev) внутри следующего за текущим элементом
присваивается указатель на предыдущий элемент внутри текущего. Если же
текущий элемент окажется в начале списка, тогда указателю на первый элемент
в списке присваивается указатель на текущий элемент, а локальной переменной Если во время поверки наличия элементов в списке окажется, что он
пуст, то выводится сообщение: «Таблица пуста».
Аннотация. Язык "C"(произносится "си") - это универсальный язык программирования, для которого характерны экономичность выражения, современный поток ...
мысленно присваиваться указателям, а нуль - это особый слу- символы, то и TEMP должен быть указателем на символы, чтобы...
Содержание. Аннотация 0.1. Введение 1. Учебное введение 1.1. Начинаем 1.2. Переменные и арифметика 1.3. Оператор FOR 1.4. Символические константы 1.5 ...
*PY;*PY = TEMP; } Указатели в качестве аргументов обычно используются вфункциях, "служащий" описывается набором атрибутов та-ких, как фамилия, имя, отчество...
Содержание Введение 3 Глава 1. Динамические типы данных 6 1.1 Списки. Очередь. Стек. Дек. 6 1.2 Динамические информационные структуры 22 Глава 2 ...
Если next{х}= nil, то х - последний элемент списка или, как говорят, его хвост (tail). Uk := nil; Указателям присваиваем nil. q := nil;...
Основы алгоритмического языка С++ Переменные и операции языка С++ Здесь представлены базовые компоненты программ на С++. В их число входят типы данных ...
Теперь модификатор указателя имеет более высокий приоритет, чем модификатор массива, и переменная var объявляется как указатель на массив из пяти величин типа int. Во втором примере объявляется переменная с именем temp типа структура....
Object Pascal 1. Основы языка Object Pascal 1.1. Алфавит языка Основными символами языка Object Pascal являются: символы _ 26 больших и 26 малых ...
константу Nil (пустой указатель); В предыдущем примере переменная MyRecord типа SomeRecordType, объявленная внутри процедуры GetInfo, является образцом такого описания....
Основные понятия алгоритмического языка 1. О С Н О В Н Ы Е П О Н Я Т И Я А Л Г О Р И Т М И Ч Е С К О Г О Я З Ы К А СОСТАВ ЯЗЫКА. Обычный разговорный ...
Для переменных типа указатель введено стандартное значение NIL, которое означает, что указатель не ссылается ни к какому объекту. Процедура New( var p: Pointer ) выделяет место в динамической об- ласти памяти для размещения динамической переменной p^ и ее адрес присваивает указателю p....
Основные понятия алгоритмического языка 1. ОСНОВНЫЕ ПОНЯТИЯ АЛГОРИТМИЧЕСКОГО ЯЗЫКА СОСТАВ ЯЗЫКА. Обычный разговорный язык состоит из четырех основных ...
Для переменных типа указатель введено стандартное значение NIL, которое размещения динамической переменной p^ и ее адрес присваивает указателю p....
Лекция 1. Структура программы на языке Turbo Pascal Приведём простейший пример программы, единственная цель которой ( вывести на экран какое-нибудь ...
Указателю можно присваивать значение другого указателя такого же типа, а также значение nil, которое означает "ни на что не указывает". Можно сравнивать указатель с nil, с адресами переменных....
Ссылочные типы. Динамические переменные Курсовая работа по дисциплине "информатика" Студент группы Тюменский государственный нефтегазовый университет ...
Линейный список неудобен тем, что при попытке вставить некоторый элемент перед текущим элементом, требуется обойти почти весь список, начиная с заголовка, чтобы изменить значение ... Для создания новой пустой или очистки существующей очереди достаточно присвоить указателям на первый и последний элементы значение nil....
Лабораторная работа № 1. Тема: Ознакомительная работа в среде MuLisp. Базовые функции Лиспа. Символы, свойства символов. Средст-ва языка для работы с ...
(имя Иван отчество Иванович фамилия Иванов) 5. а) (first ), second, third, и т. д. возвращающие соответственно первый, второй, третий, и т. д. элемент списка. в) (last ) Эта функция возвращает последний элемент списка. не ... ... |
|
|
|