Aod 10
Aod 10
type
pList = ^TList;
TList = record
info: string;
next: pList;
end;
pDel = ^TDel;
TDel = record
info : string;
pred : pDel;
end;
else begin
write('введите значение поиска = ');
readln(key);
pTemp := Search(key);
if (pTemp = nil) then writeln('false')
else begin
readln(data);
New(pNew);
pNew^.info := data;
pNew^.next := pTemp^.next;
pTemp^.next := pNew;
writeln('true');
end;
end;
end;
//добавление перед элементом
procedure AddBefore;
var pNew, pPrev : pList;
data, key: string;
begin
//prov na pustotu
if (pHead^.next = pHead) then begin
new(pNew);
write('Список пуст введите значение info нового
поля = ');
readln(data);
pNew^.info := data;
pNew^.next := pHead;
pHead^.next := pNew;
end
else begin
write('введите значение поиска = ');
readln(key);
pPrev := Search2(key);
New(pNew);
write('введите значение info нового поля = ');
read(data);
pNew^.info := data;
pNew^.next := pPrev^.next;
pPrev^.next := pNew;
writeln('true');
end;
end;
//удаление
else begin
pPrev:= Search2(key);
New(pCash);
pDelete := pPrev^.next;
pPrev^.next := pDelete^.next;
pCash^.info := pDelete^.info;
pCash^.pred := sp;
sp:=pCash;
dispose(pDelete);
end;
end;
//вывод
procedure StWriteln;
var pTemp : pList;
begin
pTemp := pHead^.next;
While (pTemp <> pHead) do begin
Write(pTemp^.info,' ');
pTemp := pTemp^.next;
end;
end;
begin
//инициализация
new(pHead);
pHead^.next := pHead;
sp:=nil;
repeat
//Меню
Writeln('Выберите действие:');
Writeln('1: Вывод.');
Writeln('2: Вывод удаленного.');
Writeln('3: Поиск.');
Writeln('4: Добавить после или первый элемент.');
Writeln('5: Добавить перед или первый элемент.');
Writeln('6: Мягкое удаление.');
Writeln('7: Выход.');
Write('Введите команду: ');
Readln(Cmd);
case Cmd of
1:StWriteln;
2:WrStack;
3:begin
write('введите key = ');
readln(x);
Search(x); end;
4:begin
AddAfter;end;
5:AddBefore;
6:begin
write('введите key = ');
readln(x);
Pop(x);end;
end;
until Cmd = 7;
end.