Главная страница

Алгоритмизации


Скачать 1.15 Mb.
НазваниеАлгоритмизации
Дата27.09.2022
Размер1.15 Mb.
Формат файлаdocx
Имя файла12_100229_1_124427 (1).docx
ТипДокументы
#700459
страница33 из 67
1   ...   29   30   31   32   33   34   35   36   ...   67

Добавлениеэлементоввконецсписка


  1. Начало цикла.

  2. Захват памяти под текущий элемент:

t = (Spis*) malloc(sizeof(Spis));

  1. Формирование информационной части: scanf(“%d”, &t -> info);

  2. Формирование адресных частей текущего элемента:

а) указателю на следующий элемент (Next) присваиваем значение

NULL, т.к. добавление выполняем в конец, следующего за tнет: t -> Next = NULL;

б) указателю на предыдущий элемент (Prev), используя указатель конца (end), присваиваем адрес бывшего последнего элемента:

t -> Prev = end;

  1. Последним элементом был end, а должен стать t, для этого указатель на следующий элемент последнего в списке (end) устанавливаем на создан- ный (текущий):

end -> Next = t;

  1. Переставляем указатель конца списка на созданный элемент: end = t;

  2. Продолжаем цикл до тех пор, пока не обработаем признак его завершения.



      1. Алгоритмпросмотрасписка






  1. Устанавливаем текущий указатель на: начало списка t = begin; конец списка t = end;

  2. Начало цикла, работающего до тех пор, пока t != NULL.



  1. Информационную часть текущего элемента t -> info на печать.

  2. Устанавливаем текущий указатель на:

следующий элемент, адрес которого находится в поле Next текущего элемента

t = t -> Next;

  1. Конец цикла.

предыдущий элемент, адрес которого находится в поле Prev текущего элемента

t = t -> Prev;



      1. Алгоритмпоискаэлементавспискепоключу


Ключом может быть любое интересующее значение (в зависимости от поставленной задачи). Поэтому уточним задачу: найдем конкретное значение info в списке и его порядковый номер.

  1. Введем с клавиатуры ключ поиска, т.е. искомое значениеi_p.




  1. Установим текущий указатель на начало списка: t = begin;

  2. Счетчик элементов k= 1;

  3. Начало цикла (выполнять пока t != NULL, т.е. не дойдем до конца).

  4. Сравниваем информационную часть текущего элемента с искомым: а) если они совпадают (t -> info = i_p), выводим на экран элемент, его

номер kи завершаем поиск (break);

б) иначе, переставляем текущий указатель на следующий элемент и увеличиваем счетчик k на 1:

t = t -> Next; k++;

  1. Конец цикла.
      1. 1   ...   29   30   31   32   33   34   35   36   ...   67


написать администратору сайта