Добавление нового элемента в список
Пусть имеется связный список из трех чисел: 5, -3, -12. Добавим в описание переменных переменную ссылочного типа r: Var head, q, r: TPoint; Список сформирован, и значениями переменных head и q является ссылка на первый элемент списка:
Необходимо после элемента -3вставить элемент с информационной частью, равной 17. Для включения нового элемента в готовый список выполняются следующие действия:
1. создается новый элемент и заполняется его информационное поле: New(r); r^.Inf := 17; 2. в списке находится элемент, после которого должен стоять новый, в данном случае элемент -3; для этого используем переменную q : While (q <> Nil) Do пока не дошли до конца списка If (q^.Inf = -3) если нашли нужный элемент, Then Break то выходим из цикла поиска, Else q := q^.Next; иначе делаем шаг по списку сейчас ссылка q указывает на элемент -3 , то есть q^.Inf = -3, а поле q^.Next содержит адрес элемента -12:
3. в ссылочное поле нового элемента r^.Next помещается адрес, стоящий в ссылочном поле найденного элемента (адрес следующего за ним элемента, в данном случае элемента -12, этот адрес хранится в q^.Next): r^.Next := q^.Next;
сейчас оба элемента (17 и -3) будут соединены с элементом -12, 4. в ссылочное поле найденного элемента -3 q^.Next помещается адрес нового элемента 17, который хранится на ссылке r: q^.Next := r;
Пример: сформировать список из элементов 5, -3, 17, -12 и вывести его на экран. Добавлять с клавиатуры новые элементы после заданных (конец ввода – число 0), каждый раз выводя новый список на экран. Интерфейс: Создание списка Первое число: -12 Следующее число: 17 Следующее число: -3 Следующее число: 5 Следующее число: 0 Введено чисел: 4 Введенные числа: 5 -3 17 -12 Вставка элементов в список Новый элемент: -2 После какого: -3 Новый список: 5 -3 -2 17 -12 Новый элемент: 15 После какого: -12 Новый список: 5 -3 -2 17 -12 15 Новый элемент: 9 После какого: 5 Новый список: 5 9 -3 -2 17 -12 15 Новый элемент: 20 После какого: 10 ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|