Var k:list;
begin
k:=a;
result:=inttostr(k.key);
end;
//-----------------------------------------------------------------------------
function CreateE(a: T): PNode;
//Создаёт узел списка для элемента a и возвращает указатель на него.
begin
try
new(Result);
with Result^ do begin
Key:= a;
Next:= nil;
end;
except
on EOutOfMemory do begin
ShowMessage(‘Нет памяти‘);
Result:= nil;
end;
end;
end;
end.
program SList;
{$APPTYPE CONSOLE}
uses
SysUtils,
UList in 'UList.pas';
var
L: List = nil;
R: List = nil;
I: Integer;
begin
//-----------операция ListToStr-------------
writeln('**ListToStr**');
writeln('List L-> 0: | ',ListToStr(L));
//-----------операция ListToStr and AddL-------------
writeln('**AddL**');
AddL(L,3);
writeln('List L-> 1: 3|',ListToStr(L));
AddL(L,1);
writeln('List L-> 2: 1,3|',ListToStr(L));
AddL(L,5);
writeln('List L-> 3: 5,1,3 |',ListToStr(L));
empty(l);
//-----------операция ListToStr and AddR-------------
writeln('**AddR**');
writeln('List L-> 0: 0|',ListToStr(L));
AddR(L,3);
writeln('List L-> 1: 3|',ListToStr(L));
AddR(L,1);
writeln('List L-> 2: 3,1|',ListToStr(L));
AddR(L,5);
writeln('List L-> 3: 3,1,5 |',ListToStr(L));
//-----------операция EmptyList-------------
writeln('**Empty**');
Empty(L);
writeln('List L-> 0: | ',ListToStr(L));
Empty(L);
writeln('List L-> 0: | ',ListToStr(L));
//-----------операция H-------------
writeln('**H**');
for i:= 1 to 5 do AddL(L,i);
writeln('List L-> 5: 5,4,3,2,1| ',ListToStr(L));
for i:= 1 to 5 do writeln(H(L));
writeln('List L-> 0: | ',ListToStr(L));
empty(l);
writeln('**H_**');
//-----------операция H_-------------
for i:= 1 to 5 do AddL(L,i);
writeln('List L-> 5: 5,4,3,2,1| ',ListToStr(L));
for i:= 1 to 5 do writeln(H_(L));
writeln('List L-> 0: | ',ListToStr(L));
empty(l);
writeln('**Tail**');
//-----------операция Tail-------------
for i:= 1 to 5 do AddL(L,i);
writeln('List L-> 5: 5,4,3,2,1| ',ListToStr(L));
R:= Tail(L);
writeln('List L-> 1: 5| ',ListToStr(L));
writeln('List R-> 4: 4,3,2,1| ',ListToStr(R));
empty(l);
writeln('**Tail_**');
//-----------операция Tail_-------------
for i:= 1 to 5 do AddL(L,i);
writeln('List L-> 5: 5,4,3,2,1| ',ListToStr(L));
R:= Tail_(L);
writeln('List L-> 1: 1| ',ListToStr(L));
writeln('List R-> 4: 5,4,3,2| ',ListToStr(R));
empty(l);
empty(r);
writeln('**Merge**');
for i:= 1 to 5 do AddL(L,i);
writeln('List L-> 5: 5,4,3,2,1| ',ListToStr(L));
for i:= 1 to 5 do AddR(R,i);
writeln('List R-> 5: 1,2,3,4,5| ',ListToStr(R));
merge(l,r);
writeln('List L-> 10: 5,4,3,2,1,1,2,3,4,5| ',ListToStr(L));
writeln('**Number**');
writeln('List L-> 10: 10| ',number(l));
readln;
end.
Тестовые наборы:
Тестовый набор для тестирования операции СписокВСтроку |
||||
Номер теста |
Исходные данные |
Ожидаемый результат |
||
Вход |
Состояние списка |
Возвращаемое значение |
Состояние списка |
|
1 |
L |
() |
Empty List |
() |
Тестовый набор для тестирования операции Опустошить |
||||
Номер теста |
Исходные данные |
Ожидаемый результат |
||
Вход |
Состояние списка |
Возвращаемое значение |
Состояние списка |
|
1 |
L |
(3,1,5) |
Empty List |
() |
2 |
L |
() |
Empty List |
() |
Тестовый набор для тестирования операции ДобавитьСправа |
||||
Номер теста |
Исходные данные |
Ожидаемый результат |
||
Вход |
Состояние списка |
Вводимое значение |
Состояние списка |
|
1 |
L |
() |
3 |
(3) |
2 |
L |
(3) |
1 |
(3,1) |
3 |
L |
(3,1) |
5 |
(3,1,5) |
Тестовый набор для тестирования операции ДобавитьСлева |
||||
Номер теста |
Исходные данные |
Ожидаемый результат |
||
Вход |
Состояние списка |
Вводимое значение |
Состояние списка |
|
1 |
L |
() |
3 |
(3) |
2 |
L |
(3) |
1 |
(1,3) |
3 |
L |
(1,3) |
5 |
(5,1,3) |
Тестовый набор для тестирования операции Голова |
||||
Номер теста |
Исходные данные |
Ожидаемый результат |
||
Вход |
Состояние списка |
Возвращаемое значение |
Состояние списка |
|
1 |
L |
(5,4,3,2,1) |
5 |
(4,3,2,1) |
2 |
L |
(4,3,2,1) |
4 |
(3,2,1) |
3 |
L |
(3,2,1) |
3 |
(2,1) |
Тестовый набор для тестирования операции ГоловаСправа |
||||
Номер теста |
Исходные данные |
Ожидаемый результат |
||
Вход |
Состояние списка |
Возвращаемое значение |
Состояние списка |
|
1 |
L |
(5,4,3,2,1) |
1 |
(5,4,3,2) |
2 |
L |
(5,4,3,2) |
2 |
(5,4,3) |
3 |
L |
(5,4,3) |
3 |
(5,4) |
Тестовый набор для тестирования операции Хвост |
||||
Номер теста |
Исходные данные |
Ожидаемый результат |
||
Вход |
Состояние списка |
Возвращаемое значение |
Состояние списка |
|
1 |
L |
(5,4,3,2,1) |
R=(4,3,2,1) |
(5) |
Тестовый набор для тестирования операции ХвостСправа |
||||
Номер теста |
Исходные данные |
Ожидаемый результат |
||
Вход |
Состояние списка |
Возвращаемое значение |
Состояние списка |
|
1 |
L |
(5,4,3,2,1) |
R=(5,4,3,2) |
(1) |
Тестовый набор для тестирования операции Соединить |
|||||
Номер теста |
Исходные данные |
Ожидаемый результат |
|||
Вход |
Состояние списка |
Возвращаемое значение |
Состояние списка |
||
1 |
L,R |
L=(5,4,3,2,1) R=(1,2,3,4,5) |
Не определено. |
(5,4,3,2,1,1,2,3,4,5) |
Практическая работа. Стек целых чисел
Цель: Сформировать практические навыки реализации абстрактного типа данных Стека целых чисел на основе библиотечного абстрактного типа данных Списка целых чисел.