Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Readln(a);

q^.inf:=a;

q^.next:=p^.next;

p^.next:=q

End

End;

6. Видалення. Для видалення елементу із вказаним інформаційним плем потрібно знову ж як і для вставки перед мати вказівник на попередній елемент, тому операція видалення матиме декілька варіантів: пустий список, видаляється перший елемент, відсутність у списку шуканого елементу, шуканий елемент довільний, крім першого.

writeln('введіть елемент, який потрібно вилучити');

Readln(a);

p:=first;

if p=nil then writeln ('список пустий')

Else

if p^.inf=a then

Begin

first:=p^.next;

Dispose(p)

End

Else

Begin

while (p^.next<>nil) and (p^.next^.inf<>a) do

p:=p^.next;

if p^.next=nil then writeln ('такого елементу немає')

Else

Begin

q:=p^.next;

p^.next:=q^.next;

Dispose(q)

End

End;

Тема: Двонапрямлені лінійні списки.

У двонапрямлених списках і в розглянутих раніше однонапрямлених елементи утворюють лінійну структуру даних з послідовним доступом, але на відміну від них, рух по списку можливий у двох напрямках, тому кожен елемент міститиме, окрім інформаційного поля, два вказівні поля: на наступний і попередній елементи. Список матиме два фіксованих вказівники: на перший – first; на останній – last.

Оскільки рух по списку можливий у двох напрямках, то переміщення від first до last здійснюється через вказівник next; від last до first через вказівник prev, тому формування списку за правилом стеку від first до last – це та ж сама черга від last до first і навпаки.Як і в однонапрямлених списках над двонапрямленими виконують ті ж самі операції.

Оголошення структури списку може мати вигляд:

TYPE

list2=^el_list2;

el_list2=record

inf:integer;

next,prev:list2

END;

ü Формування списку.

writeln('введіть кількість елементів у списку');

Readln(n);

first:=nil;

last:=nil;

for i:=1 to n do

Begin

writeln('введіть елемент');

Readln(a);

New(p);

p^.inf:=a;

if last=nil then last:=p;

p^.next:=first;

first^.prev:=p;

first:=p

End;

2. Перегляд. Здійснюється аналогічно, тільки може здійснюватися в обоз напрямках.

 

PROCEDURE RESIV;

BEGIN

p:=first;

while p^.next<>nil do

Begin

write(p^.inf,' ');

p:=p^.next

End;

writeln(p^.inf,' ')

END;

Пошук.

p:=first;

writeln('введіть шуканий елемент');

Readln(a);

i:=0;

while (p<>nil) do

Begin

Inc(k);

if p^.inf=a then

Begin

i:=i+1;

writeln('під № ',k)

End;

p:=p^.next

End;

if i=0 then writeln ('немає')

else writeln ('кількість ',i)

3.Вставка перед на відмінну від однонапрямленого списку аналогічна вставці після з точністю переміни вказівників prev і next.

write('введіть елемент, після якого потрібно вставити новий');

Readln(n);

write('введіть новий елемент');

Readln(a);

p:=first;

while p<>nil do

Begin

if p^.inf=n then

Begin




Дата добавления: 2015-09-11; просмотров: 16 | Поможем написать вашу работу | Нарушение авторских прав

S1: string; | A.name , a.year, a.pol, a.educ | Readln(name); | Очевидно, що значення параметру не повино перевищувати реальну довжину рядка. | Звичайно базовий тип множини в цьому випадку повинен бути допустимим для процедур вводу-виводу. | Close(f2); | Truncate(f); | Для доповнення текстового файлу використовують режим до запису. | Квартира з номером 34 у 13 будинку з номером 12. | Release(p); |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав