Алгоритмизации
Скачать 1.15 Mb.
|
ДобавлениеэлементоввконецспискаНачало цикла. Захват памяти под текущий элемент: t = (Spis*) malloc(sizeof(Spis)); Формирование информационной части: scanf(“%d”, &t -> info); Формирование адресных частей текущего элемента: а) указателю на следующий элемент (Next) присваиваем значение NULL, т.к. добавление выполняем в конец, следующего за tнет: t -> Next = NULL; б) указателю на предыдущий элемент (Prev), используя указатель конца (end), присваиваем адрес бывшего последнего элемента: t -> Prev = end; Последним элементом был end, а должен стать t, для этого указатель на следующий элемент последнего в списке (end) устанавливаем на создан- ный (текущий): end -> Next = t; Переставляем указатель конца списка на созданный элемент: end = t; Продолжаем цикл до тех пор, пока не обработаем признак его завершения. АлгоритмпросмотраспискаУстанавливаем текущий указатель на: начало списка t = begin; конец списка t = end; Начало цикла, работающего до тех пор, пока t != NULL. Информационную часть текущего элемента t -> info – на печать. Устанавливаем текущий указатель на: следующий элемент, адрес которого находится в поле Next текущего элемента t = t -> Next; Конец цикла. предыдущий элемент, адрес которого находится в поле Prev текущего элемента t = t -> Prev; АлгоритмпоискаэлементавспискепоключуКлючом может быть любое интересующее значение (в зависимости от поставленной задачи). Поэтому уточним задачу: найдем конкретное значение info в списке и его порядковый номер. Введем с клавиатуры ключ поиска, т.е. искомое значениеi_p. Установим текущий указатель на начало списка: t = begin; Счетчик элементов k= 1; Начало цикла (выполнять пока t != NULL, т.е. не дойдем до конца). Сравниваем информационную часть текущего элемента с искомым: а) если они совпадают (t -> info = i_p), выводим на экран элемент, его номер kи завершаем поиск (break); б) иначе, переставляем текущий указатель на следующий элемент и увеличиваем счетчик k на 1: t = t -> Next; k++; Конец цикла. |