IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Помогите переписать программу с Пакаля на Си!, Добавить элемент в двусвязный список.
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Женский
Реальное имя: Aleksandra

Репутация: -  0  +


Помогите пожалуйста переписать программу с Паскаля в Си.
Вот задание: добавить элемент в двусвязный список (в начало, середину и конец) и упорядочить в порядке возрастания.
Код программы в Паскале:

Код

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.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 14:18
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name