Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2018, 19:06   #1
Петр2018
Пользователь
 
Регистрация: 24.11.2018
Сообщений: 28
Восклицание НУЖНА ПОМОЩЬ В СОСТАВЛЕНИИ ПРОГРАММЫ НА ЯЗЫКЕ CИ

Дан указатель Р1 на первый элемент непустого двусвязного списка. Продублировать в списке все элементы с нечетными номерами (новые элементы добавлять после существующих элементовс такими же значениями) и вывести указатель на последний элемент преобразованного списка)

Имееется код паскаль,но нужно СИ

Код:
program Pointer38;
type
  PNode=^TNode;
  TNode=record
    Data: Integer;
    Next: PNode;
    Prev: PNode;
  end;
 
procedure CreateList(var P1,P2:PNode);
var
 pt1,pt2:PNode;
 i,N:integer;
begin
 Write('NumEl:');
 Readln(N);
 new(p1);
 Write('num: ');
 Readln(P1^.Data);
 pt2:=p1;
 
 for i:=1 to N-1 do
  begin
   new(pt1);
   Write('num: ');
   Readln(pt1^.Data);
   pt1.Prev:=pt2;
   pt2.Next:=pt1;
   pt2:=pt2.Next;
  end;
 pt2.Next:=nil;
 p2:=pt2;
end;
 
procedure InsertAfter(P0:PNode;D:integer);
var
 temp:PNode;
begin
 new(temp);
 temp.Data:=D;
 
 temp.Prev:=P0;
 temp.Next:=P0.Next;
 
 P0.Next:=temp;
 
 if temp.Next<>nil then
  begin
   temp:=temp.Next;
   temp.Prev:=P0.Next;
  end;
end;
 
procedure DublOdd2(var P1,P2:PNode);
var
 p:PNode;
 a:^Word;
 len:integer;
begin
 if P1<>nil then
  begin
   len:=1;
   p := p1;
   a:=Addr(p);
 
   repeat
    begin
     if odd(len) then
      begin
       InsertAfter(p,p.Data);
       p := p^.next;
      end;
     P2:=P;
     p := p^.next;
     inc(len);
    end;
   until (p = nil);
  end
  else Writeln('nil');
end;
 
var
 P1,P2:PNode;
 a:^Word;
 
begin
 CreateList(P1,P2);
 P2:=nil;
 
 DublOdd2(P1,P2);
 
 a:=Addr(P2);
 Writeln('end: ',a^);
end.
Пожалуйста, оформляйте Ваш код согласно правилам.

Последний раз редактировалось Вадим Мошев; 24.12.2018 в 19:43.
Петр2018 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь в составлении Post запроса Danny_Colt Python 1 21.07.2017 17:42
нужна помощь в составлении программы на Pascal ABC BAstra Помощь студентам 2 21.10.2015 10:04
Помощь в составлении программы lafri Помощь студентам 0 02.06.2014 21:59
Нужна помощь в составлении программы в Паскале yamag Помощь студентам 3 17.10.2013 19:09
Нужна помощь в составлении программы Stary Помощь студентам 5 09.11.2009 09:04