Скачать презентацию Линейный однонаправленный список Это структура данных состоящая из Скачать презентацию Линейный однонаправленный список Это структура данных состоящая из

СПИСКИ(20).ppt

  • Количество слайдов: 17

Линейный однонаправленный список Это структура данных, состоящая из элементов одного типа, связанных между собой. Линейный однонаправленный список Это структура данных, состоящая из элементов одного типа, связанных между собой. В таком списке, каждый предыдущий элемент хранит адрес памяти, где расположен следующий элемент. Пример графического отображения линейного однонаправленного списка Указатель 12 23 11 Х

Пример создания на языке Pascal type plist = ^list; list = record figure : Пример создания на языке Pascal type plist = ^list; list = record figure : integer; pnext: plist; end; } Plist — указатель на тип list(который будет объявлен ниже по тексту) Объявление типа list, который представляет из себя запись, включающую несколько элементов(в том числе указатель plist, который был объявлен ранее) При этом в основной программе хранится указатель на первый элемент списка(на голову списка) и на последний элемент(хвост). Они называются phead и ptail соответственно.

Несколько основных функций и процедур, необходимых при работе с однонаправленным списком Подсчет количества элементов Несколько основных функций и процедур, необходимых при работе с однонаправленным списком Подсчет количества элементов в списке Добавление элемента в начало списка Добавление элемента в отсортированный список Удаление элемента из списка Слить два упорядоченных списка в третий упорядоченный

Функция подсчета элементов в однонаправленном списке Описание функции Процедура работает с глобальной переменной: указателем Функция подсчета элементов в однонаправленном списке Описание функции Процедура работает с глобальной переменной: указателем на голову списка. Создается локальная переменная n, в которой будет хранится текущее количество элемеyтов в списке. Изначально, оно равно 0. Создается локальная переменная типа plist, которая будет указывать на обрабатываемый элемент списка. До тех пор, пока значение pmove не будет равно nil. Функция переходит к следующему элементу списка и наращивает n. В конце, функция возвращает значение n.

//Создаем запись(см. слайд№ 2) //Вывести список на экран //Обрабатывается действие пользователя(см. проц. menu) //Добавить //Создаем запись(см. слайд№ 2) //Вывести список на экран //Обрабатывается действие пользователя(см. проц. menu) //Добавить запись в конец списка //Показывает возможные действия

Запустить программу Запустить программу

Добавление элемента в начало списка Описание процедуры Процедура работает с глобальным указателем на голову Добавление элемента в начало списка Описание процедуры Процедура работает с глобальным указателем на голову списка. Вначале она создает новый указатель типа plist, который изначально ни на что не указывает. Потом, пользователь вводит число, которое записывается в одно из полей по адресу, предоставленному новому указателю. И, наконец, заменяет текущий указатель на голову.

Запустить программу //См предыдущую программу Запустить программу //См предыдущую программу

Добавление элемента в отсортированный список Описание процедуры Сначала сравнивается введенное число с головой списка. Добавление элемента в отсортированный список Описание процедуры Сначала сравнивается введенное число с головой списка. Если оно меньше, то голова списка меняется. Иначе запускается цикл, который проходит все элементы списка, сохраняя при этом указатель на предыдущий элемент(В переменной pvrem). Основной цикл идет до тех пор, пока указатель на текущий элемент(pmove) не равен nil. Как только будет найдено число, большее заданного, программа вставит вновь прибывшее число между ними и завершит выполнение процедуры. Если же цикл завершится, а число больше введенного не будет найдено, процедура добавит введенное число в конец списка.

//См предыдущую программу //См предыдущую программу

//См предыдущую программу Запустить программу //См предыдущую программу Запустить программу

Удаление элемента из списка Описание процедуры Процедуре на вход подается число, которое необходимо удалить Удаление элемента из списка Описание процедуры Процедуре на вход подается число, которое необходимо удалить из списка. Если это число является головой списка, то головой становится второй элемент и процедуру завершается. Иначе, процедура движется к концу списка, в поисках необходимого числа. Как только такое будет найдено, процедура меняет указатель у предыдущего элемента, на следующий за найденным, освобождает память и завершает выполнение процедуры. Если же цикл закончился, а данного числа не обнаружено, программа любезно сообщит об этом пользователю

//См предыдущую программу //См предыдущую программу

//См предыдущую программу Запустить программу //См предыдущую программу Запустить программу

Слияние двух отсортированных списков в один Описание процедуры Процедура работает рекурсивно. Алгоритм настолько прост, Слияние двух отсортированных списков в один Описание процедуры Процедура работает рекурсивно. Алгоритм настолько прост, что автор не приводит здесь его описания.

//См предыдущую программу //См предыдущую программу

//См предыдущую программу Запустить программу //См предыдущую программу Запустить программу