Написать процедуру перестановки элементов очереди - 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.
Объяснение кода листинга программы
- В процедуре
add
создается новый экземпляр структурыcher
, инициализируются его поляinf
иlink
. Еслиbeg
равенnil
, тоbeg
присваивается ссылка на новый экземпляр. В противном случае, ссылка на новый экземпляр передается в полеlink
текущего элемента. Затем текущий элемент становится новымbeg
. - В процедуре
zmincher
текущий элемент очереди (который является первым элементом) помечается какnil
, а следующий элемент становится новымbeg
. - В процедуре
print
происходит итерация по всем элементам очереди, начиная сbeg
. Для каждого элемента выводится его значение из поляinf
. После этого, текущий элемент становится новымbeg
. - В процедуре
del
происходит итерация по всем элементам очереди, начиная сbeg
. Для каждого элемента выводится его значение из поляinf
. Затем, текущий элемент становится новымbeg
, а предыдущийbeg
помечается какnil
. После этого, все объекты, на которые указываетbeg
, освобождаются.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д