Написать процедуру перестановки элементов очереди - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Как написать процедуру такой перестановки элементов очереди: х(1), х(2),..., х(n)⇒x(2),x(3),…,x(n),х(1)?

Решение задачи: «Написать процедуру перестановки элементов очереди»

textual
Листинг программы
type
  pcher = ^cher;
  cher = record
    inf: integer;
    link: pcher;
  end;
 
var
  beg, ent: pcher;
  a, n, i: integer;
 
procedure add(b: integer);
var
  p: pcher;
begin
  new(p);
  
  p^.inf := b;
  p^.link := nil;
  if beg = nil then
    beg := p
  else
    ent^.link := p;
  ent := p;
end;
 
 
procedure zmincher;
var
  p, q: pcher;
begin
  ent^.link := beg;
  q := beg;
  beg := beg^.link;
  q^.link := nil;
end;
 
procedure print;
var
  p: pcher;
begin
  p := beg;
  while p <> nil do
  begin
    writeln(p^.inf);
    p := p^.link;
  end;
end;
 
procedure del;
var
  p: pcher;
begin
  while ent <> nil do
  begin
    p := ent;
    ent := ent^.link;
    dispose(p);
  end;
end;
 
begin
  write('Введите количество элементов очереди: ');
  readln(n);
  beg := nil; ent := nil;
  for i := 1 to n do
  begin
    write('введите ', i, '-ый элемент очереди: ');
    readln(a);
    add(a);
  end;
  print; // до перестановки
  zmincher;
  writeln('Перестановка элементов очереди из x(1), x(2),..., x(n) в x(2),x(3),…,x(n),x(1): ');
  print; // после перестановки
  del;
end.

Объяснение кода листинга программы

  1. В процедуре add создается новый экземпляр структуры cher, инициализируются его поля inf и link. Если beg равен nil, то beg присваивается ссылка на новый экземпляр. В противном случае, ссылка на новый экземпляр передается в поле link текущего элемента. Затем текущий элемент становится новым beg.
  2. В процедуре zmincher текущий элемент очереди (который является первым элементом) помечается как nil, а следующий элемент становится новым beg.
  3. В процедуре print происходит итерация по всем элементам очереди, начиная с beg. Для каждого элемента выводится его значение из поля inf. После этого, текущий элемент становится новым beg.
  4. В процедуре del происходит итерация по всем элементам очереди, начиная с beg. Для каждого элемента выводится его значение из поля inf. Затем, текущий элемент становится новым beg, а предыдущий beg помечается как nil. После этого, все объекты, на которые указывает beg, освобождаются.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы