program course9;
type
link = ^kom;
kom = record
ini: integer;
next: link;
end;
var
pn: link;
arg, j, m: integer;
procedure add(var n: link; x, num: integer);
var
neo, ind: link;
i: integer;
begin
new(neo);
neo^.ini := x;
if n = nil then
begin
n := neo;
neo^.next := nil;
end
else if num = 1 then
begin
neo^.next := n;
n := neo;
end
else
begin
i := 0;
ind := n;
while (i <> num - 2) and (ind^.next <> nil) do
begin
i := i + 1;
ind := ind^.next;
end;
neo^.next := ind^.next;
ind^.next := neo;
end;
end; { add }
procedure del(var n: link; num: integer);
var
neo, ind: link;
i: integer;
begin
if n <> nil then
begin
if num = 1 then
begin
neo := n;
n := n^.next;
dispose(neo);
end
else
begin
i := 0;
ind := n;
while (i <> num - 2) and (ind^.next <> nil) do
begin
i := i + 1;
ind := ind^.next;
end;
if ind^.next <> nil then
begin
neo := ind^.next;
ind^.next := neo^.next;
dispose(neo);
end;
end;
end;
end; { del }
procedure veiw(n: link);
var
ind: link;
i: integer;
begin
ind := n;
i := 0;
if ind = nil then
writeln('List is empty')
else
begin
writeln;
writeln('The list is');
while ind <> nil do
begin
i := i + 1;
writeln(i, ') ', ind^.ini);
ind := ind^.next;
end;
end;
end; { veiw }
procedure spec(var n: link; num: integer);
var
ind: link;
i: integer;
begin
i := 0;
ind := n;
while ind <> nil do
begin
i := i + 1;
ind := ind^.next;
end;
if i < num then
writeln('The list consists of only ', i, ' elements')
else
begin
i := 0;
while i <> num do
begin
i := i + 1;
ind := n;
n := n^.next;
dispose(ind);
end;
end;
end; { spec }
begin
pn := nil;
m := 1;
while m <> 0 do
begin
writeln;
writeln;
writeln('Type "1" to ADD new element to the list');
writeln('Type "2" to DELETE element from the list');
writeln('Type "3" to VEIW the list');
writeln('Type "4" to DELETE first k-elements');
writeln('Type "0" to exit program');
writeln;
readln(m);
case m of
1:
begin
write('Enter new element : ');
readln(arg);
write('Enter place : ');
readln(j);
add(pn, arg, j);
end;
2:
begin
write('Enter number of the element : ');
readln(j);
del(pn, j);
end;
3:
begin
veiw(pn);
end;
4:
begin
writeln('Enter number of elements : ');
readln(j);
spec(pn, j);
end;
end; { case }
end;
end.
Похожие записи/страницы:
- Удалить элемент, который находится в середине стека, если нечетное число элементов, а если четное, то два…
- Работа с очередью: каждая операция создание, удаление, добавление,показ элементов очереди разделены на отдельные…
- Дан файл вещественных. Вывести элементы его в обратном порядке используя стек - Pascal(Паскаль)
- Описать процедуру или функцию, которая переворачивает список L, т.е. изменяет ссылки в этом списке так, чтобы…
- В файл заносится неупорядоченный список абонентов телефонной сети в формате: фамилия, имя, отчество, адрес,…
- Описать функцию, подсчитывающую количество слов списка L, которые начинаются с той же литеры, что и следующее…
- Последовательность целых чисел заносится в файл. Прочитать из файла последовательность и записать в память в…
- Написать программу посещения студентами дисплейного класса. Учесть приход и уход студентов в течение занятий.…