Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб.Пух.1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
178.69 Кб
Скачать

2.2 Набор тестов

2.2.1

При добавлении элемента в начало, нужный элемент занимает место перед предыдущим. Если список пуст, список заполняется одним элементом.

Теперь в списке находится элемент 6. Вставим в начало элемент 3. Список будет выглядеть следующим образом:

При добавлении элемента в конец, нужный элемент занимает место после последнего элемента. Вставим в конец нашего списка элемент 28. Тогда список будет выглядеть следующим образом:

Когда уже есть несколько элементов, то можно добавить элемент после любого элемента с каким либо номером. Вставим после элемента с номером два элемент 111.

Элементу 111 присваивается номер 3. И получается список:

Добавим элемент 609 после элемента с ключом 1.

При нажатии кнопки «удалить из начала» получим: 6, 609, 111, 28.

Удалим элемент из конца списка, получим: 6, 609, 111.

Можно удалить элемент с любым номером, который есть в этом списке, например с номером 2. Получим список: 6,111.

Удалим элемент с ключом 3. Получим список, состоящий из одного элемента: 6.

2.2.2

Проверим работу программы вторым вариантом тестов: пусть число вводимых элементов равно 6. Вставим первый элемент 123. Получим список, состоящий только из элемента 123.

Вставим в начало элемент 8. Ему присваивается номер 1, ключ 2.

Вставим элемент 333333 после элемента с ключом 2. Получим следующий список:

При добавлении элемента в конец, нужный элемент занимает место после последнего элемента. Вставим элемент 2 в конец списка:

Вставим элемент 8 после элемента с номером 1:

Вставим в начало списка элемент 3. Получился список, состоящий из шести элементов: 3, 8, 8, 333333, 123, 2.

Удалим из списка элемент под номером 4. Список состоит из 5 элементов: 3, 8, 8, 123, 2.

Глава 3. Задача II 5 e

3.1 Формулировка условия задачи

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

3.2 Листинг программы

Program Revers_Spiska;

type

spisok=^zap;

zap=Record

inf:integer;

next:spisok;

end;

var

nach,p,q:spisok;

E:integer;

Procedure Input_L(var nach:spisok);

var p,q:spisok; N,i:integer; X:integer;

begin

Randomize;

write('n:');

readln(N);

writeln('spisok:');

X:=random(20)+1;

new(p);

nach:=p;

p^.inf:=X;

p^.next:=nil;

for I:=2 to N do

begin

new(q);

p^.next:=q;

X:=random(20)+1;

q^.inf:=X;

q^.next:=nil;

p:=q;

end;

end;

Procedure Print_L(var nach:spisok);

var p,q:spisok;

begin

writeln('spisok:');

p:=nach;

if p=nil then writeln('spisok pust')

else while p<>nil do

begin

writeln(p^.inf);

p:=p^.next;

end;

end;

Procedure Destroy(nach_p:spisok);

var p,p1:spisok;

begin

p:=nach_p;

while p<>nil do begin

p1:=p;

p:=p^.next;

Dispose(p1);

end;

end;

Procedure V_ob(var nach_p:spisok; pn,pk:spisok);

var p,q,q1,q2,r:spisok;

begin

p:=pn;

q:=p^.next;

q1:=q;

q2:=pk^.next;

r:=q^.next;

while q<>pk do

begin

q^.next:=p;

p:=q;

q:=r;

r:=r^.next;

end;

pn^.next:=p;

q1^.next:=pk;

end;

Procedure Obr_sp(var nach_p:spisok; E:integer);

var p,p_p,p_v:spisok;

begin

p:=nach_p;

p_p:=nil; p_v:=nil;

while p<>nil do

begin

if p^.inf=E then

begin

if p_p=nil then p_p:=p

else p_v:=p;

end;

p:=p^.next;

end;

if p_v<>nil

then V_ob(nach,p_p,p_v);

end;

begin

Input_L(nach);

Print_L(nach);

write('E=');

readln(E);

Obr_sp(nach,E);

Print_L(nach);

readln;

end.