Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

сиаод / 1-34 / 9. Односвязный список. Массивы

.pdf
Скачиваний:
71
Добавлен:
11.05.2015
Размер:
255.85 Кб
Скачать

9. Односвязный список. Основные операции. Реализация с помощью массива

Связный список – структура, элементами которой служат записи с одним и тем же форматом, связанные друг с другом логически с помощью указателей, хранящихся в самих элементах.

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

Основные операции:

1)включение элемента в список

2)удаление элемента из списка

3)нахождение элемента в списке

4)определить. является ли списо пуствм

Определение структуры: const MaxList=100;

array List[1..Maxlist] of (info, next) int info, next,c;

int BeginL; j:=list[i].next

c:= List[i].info; {обработа с } i:=List [i]. link

end;

Просмотр списка с начала:

1.i:=BeginL;

2.while i<>0 do begin

3.c:= List[i].info; {обработа с }

4.i:=List [i].next

5.end;

Включение элемента j в список после элемента IncertAfter(i,c)

1.List[j]. info=c;

2.List[j].next=List[i].next;

3.List[i].next:=j ;

Удаление элемента из списка стоящего после i Remove(i,c)

1.j:=List[i].next;

2.List[i].next:=List[j].next;

3.c:=List[j].info;

Добавление в список после i-го элемента:

1.j:=Free;//индекс свободного элемента

2.Free:=List[j].next;//индекс нового свободного элемента

3.List[j].info:=c;//занести информацию

4.List[j].next=List[i].link;//занести указатель

5.List[i].next=j;//сменить указатель предпоследнего элемента

Удаление из списка после i-го элемента:

1.j:=List[i].next;//индекс удаляемого элемента

2.c:=List[j].info;// переписали информацию

3.List[i].next:=List[j].next;//перенесли указатель

4.List[j].next:=Free;//занесли в указатель индекс свободного элемента

5.Free:=j;// сменили номер свободного элемента