![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
sasha. |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Женский Реальное имя: Aleksandra Репутация: ![]() ![]() ![]() |
Помогите пожалуйста переписать программу с Паскаля в Си.
Вот задание: добавить элемент в двусвязный список (в начало, середину и конец) и упорядочить в порядке возрастания. Код программы в Паскале: Код program dvipLIST; uses crt; type sar=^el; el=record data:integer; next:sar; back:sar; end; procedure makeNew (var first:sar); var x:integer; g,temp:sar; begin writeln('Insert integer numbner. To finish press 0'); readln(x); while x<>0 do begin if first=nil then begin new(g); g^.data:=x; g^.next:=nil; g^.back:=nil; first:=g; end else begin new(temp); g^.next:=temp; temp^.back:=g; g:=temp; g^.data:=x; end; readln(x); end; writeln('LIST is done'); end; procedure addbefore(var first:sar; x:integer); var elem:sar; begin new(elem); elem^.data:=x; elem^.next:=first; first^.back:=elem; elem^.back:=nil; first:=elem; end; procedure addlast(first:sar; data1:integer); var elem:sar; begin elem:=first; while(elem^.next<>nil)do elem:=elem^.next; new(elem^.next); elem^.next^.back:=elem; elem:=elem^.next; elem^.data:=data1; elem^.next:=nil; end; procedure addtocenter(first:sar; data1:integer); var el,elk:sar; begin el:=first; elk:=el^.next; new(el^.next); el^.next^.back:=el; elk^.back:=el^.next; el:=el^.next; el^.next:=elk; el^.data:=data1; end; procedure delete(var first:sar); var s:sar; begin while(first<>nil)do begin s:=first; first:=first^.next; dispose(s); end; end; procedure print(first:sar); begin writeln('Spausdiname: '); while first<>nil do begin write(first^.data,' '); first:=first^.next; end; writeln(); end; procedure sort (var first:sar); var s1,s2:sar; nonsort:boolean; begin nonsort:=true; while((nonsort)and(first<>nil))do begin s1:=first; s2:=s1^.next; nonsort:=false; while(s2<>nil)do begin if(s1^.data>s2^.data) then begin s1^.next:=s1^.next^.next; if(s1^.next<>nil)then s1^.next^.back:=s1; s2^.next:=s1; s2^.back:=s1^.back; if(s2^.back<>nil)then s2^.back^.next:=s2; s1^.back:=s2; nonsort:=true; s2:=s1^.next; end else begin s1:=s1^.next; s2:=s2^.next; end; end; while(s1^.back<>nil)do begin s1:=s1^.back; first:=s1; end; end; end; var LIST:sar; selection:integer; data:integer; begin makeNew(LIST); writeln('1)Insert element to the beginning'); writeln('2)Insert to center '); writeln('3))Insert to the end.'); writeln; write('Where to insert? - '); readln(selection); writeln; case selection of 1: begin writeln('insert the value'); readln(data); addbefore(LIST,data); end; 2:begin writeln('insert the value'); readln(data); addtocenter(LIST,data); end; 3:begin writeln('insert the value'); readln(data); addlast(LIST,data); end; end; sort(LIST); print(LIST); delete(LIST); end. |
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 0:42 |