Удаление элемента из списка

Пусть имеется связный список из трех чисел: 5, -3, -12.

Список сформирован, и значениями переменных head и q является ссылка на первый элемент списка:

 

Необходимо удалить из списка элемент -3.

Для удаления (исключения) существующего элемента из списка выполняются следующие действия:

1. указатели q (поисковый) и r (отстает от поискового на шаг) ставим в голову списка:

q := head^.Next; на первый элемент списка

r := head; на указатель на голову списка

2. в списке отыскивается удаляемый элемент, для этого используем поисковый указатель q :

While (q <> Nil) Do пока не дошли до конца списка

If (q^.Inf = -3) если нашли нужный элемент,

Then Break то выходим из цикла поиска,

Else

Begin

r := q; иначеподтягиваем r к q

q := q^.Next; и делаем шаг по списку указателем q

End;

сейчас ссылка q указывает на элемент -3 , то есть q^.Inf = -3, а поле q^.Next содержит адрес элемента -12. Ссылка r указывает на предыдущий элемент списка, то есть на 5, а в r^.Next содержится адрес удаляемого элемента - r^.Next = q :

3. в ссылочное поле r^.Next помещается адрес, хранящийся в q^.Next, то есть адрес элемента -12:

r^.Next := q^.Next;

Сейчас оба элемента (5 и -3) будут соединены с элементом -12,

 

а связь между элементами 5 и -3 разрывается.

4. освобождаем память от удаленного элемента -3 и возвращаем указатели q и r в голову списка:

Dispose(q); удаляем из памяти элемент -3

q := head^.Next; на первый элемент списка

r := head; на указатель на голову списка

 

Пример: сформировать список из элементов 5, -3, 17, -12 и вывести его на экран. Удалить из списка несколько элементов (конец удаления – число 0), каждый раз выводя новый список на экран.

Интерфейс:








Дата добавления: 2015-08-08; просмотров: 827;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.