Дан указатель P1 на первый элемент непустого двусвязного списка. Перегруппировать его элементы, переместив все элементы с нечетными номерами в конец списка (в том же порядке) и вывести указатель на первый элемент преобразованного списка. Операции выделения и освобождения памяти не использовать, поля Data не изменять. Записать все значения списка в файл с именем double_linked_list_9.txt"
Код | program Variant9; {$APPTYPE CONSOLE}
uses SysUtils, windows;
type TPList=^TList; TList=record data:integer; next,prev:TPlist end; var head,p1:TPList; i,el:integer; ch:char;
function AddToBegin(elem:integer):TPList; var current:TPList; begin New(current); current^.data:=elem; current^.next:=head; current^.prev:=nil; head^.prev:=current; head:=current; AddToBegin:=current; end;
function AddToEnd(elem:integer):TPList; var last,tmp:TPList; begin New(last); last^.data:=elem; last^.next:=nil; if head=nil then begin head:=last; last^.prev:=nil; end else begin tmp:=head; while tmp^.next<>nil do tmp:=tmp^.next; tmp^.next:=last; last^.prev:=tmp; end; AddToEnd:=last; end;
procedure PrintList; var tmp:TPList; begin tmp:=head; while tmp<>nil do begin write(tmp^.data,'-->'); tmp:=tmp^.next; end; writeln('nil'); end;
procedure ZapisVFile; var f:text; tmp:TPList; begin assign(f,'c:\double linked 1.txt'); rewrite(f); tmp:=head; while tmp<>nil do begin write(f,tmp^.data,'-->'); tmp:=tmp^.next; end; write(f,'nil'); close(f); end;
procedure FreeList; var current:TPList; begin while head^.next<>nil do begin current:=head^.next; Dispose(head); head:=current; end; Dispose(head); head:=nil; end;
begin SetconsoleCP(1251); SetconsoleoutputCP(1251); head:=nil; p1:=nil; for i:=1 to 4 do begin writeln('Введите элемент'); readln(el); writeln('Добавить элемент в начало или в конец (n/k)?'); readln(ch); if ch='n' then AddToBegin(el) else if ch='k' then AddToEnd(el); end; writeln('-----------------'); writeln('Полученный список'); writeln('-----------------'); PrintList; ZapisVFile; writeln; writeln('Адрес вершины p1 = ',integer(addr((p1)))); FreeList; PrintList; readln; end.
|
|