Задание
-
Реализовать тип Стек целых чисел, в соответствии с приведенной ниже спецификацией.
-
Протестировать каждую операцию, определенную на типе.
Текст программы:
unit UStack;
Interface
uses UList;
type
Stack = PList;
// --Операции на стеке---------------------------------------------------------
function CreateStack: Stack;
// --------------------Создать пустой стек------------------------------------
function StackToStr(S:stack):string;
// --------------------Выводит значения элементов стека в строку-------------
function Size(S:Stack):integer;
// --------------------Число элементов стека-----------------------------------
function Peek(S:Stack):integer;
// --------------------Стек пуст----------------------------------------------
function IsEmpty(S:Stack):boolean;
// --------------------Взять элемент стека------------------------------
procedure EmptyStack(S:Stack);
// --------------------Добавить элемент в стек------------------------
procedure Push(S:Stack; E:integer);
// --------------------Опустошить стек----------------------------------------
function Pop(S:Stack):integer;
//---------------------Освобождает выделенную под стек память-----------------
procedure DelStack(var S:stack);
//----------------------
Implementation
//------------------------------------------------------------------------------
function CreateStack: Stack;
//Создаёт пустой стек
begin
Result:= CreateL;
end;
function StackToStr(S:stack):string;
begin
Result:=ListToStr(S);
end;
function Size(S:Stack):integer;
begin
Result:=Size(S);
end;
function Peek(S:Stack):integer;
begin
result:=Head_watch(S);
end;
function IsEmpty(S:Stack):boolean;
begin
Result:=IsEmpty(S);
end;
procedure EmptyStack(S:Stack);
begin
Result:=EmptyList(S);
end;
procedure Push(S:Stack, E:integer);
begin
Result:=AddLeft(S,E);
End;
Procedure DelStack(var S:stack);
Begin
DelList(s);
End;
end.
program PStack;
{$APPTYPE CONSOLE}
uses
SysUtils,
UStack in 'UStack.pas',
Var s: Stack;
begin
S:= CreateStack;//Создание стека
writeln(StackToStr(s));//Вывод содержимого стека на консоль
Push(S,1);//Положить в стек
Push(S,2); //Положить в стек
Push(S,3); //Положить в стек
Push(S,4); //Положить в стек
writeln(StackToStr(s)); //Вывод содержимого стека на консоль
writeln(Pop(S));//Извлечение из стека
writeln(Pop(S)); //Извлечение из стека
writeln(StackToStr(s)); //Вывод содержимого стека на консоль
EmptyStack(s);//Опустошает стек
writeln(StackToStr(s)); //Вывод содержимого стека на консоль
DelStack(s);//Удаляет стек из памяти
readln;
end.