Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перевод с Паскаля на C++ Двунаправленные списки

78K
28 декабря 2011 года
Se7enSins
1 / / 28.12.2011
Есть программа на паскале надо ее перенести на C++

program db;
uses crt;
type Que=^Telem;
Telem = Record
Data: integer;
next:que;
prev: que;
end;

Tque = Record
head: Que;
tail: Que;
end;
var q,q2,q3,q4,q5:Tque; k,i,z,l,x,f,j:integer;

procedure InsertTail( var q:Tque; {var b:que;} n:integer);
var t:que;
begin
new(t);
t^.data:=n;
t^.next:=nil;
if q.head=nil then
begin
t^.prev:=nil;
q.head:=t;
end
else
begin
t^.prev:=q.tail;
q.tail^.next:=t;
end;
q.tail:=t;
end;

procedure InsertHead( var q:Tque; {var b:que;} n:integer);
var t:que;
begin
new(t);
t^.data:=n;
t^.prev:=nil;
if q.tail=nil then
begin
t^.next:=nil;
q.tail:=t;
end
else
begin
t^.next:=q.head;
q.head^.prev:=t;
end;
q.head:=t;
end;

function TakeHead(var q:Tque): integer;
var t:que;
begin
if q.head<>nil then
begin
takehead:=q.head^.data;
q.head:=q.head^.next;
{dispose(t);}
end
else
writeln('empty');
end;

function TakeTail(var q:Tque): integer;
var t:que;
begin
if q.head<>nil then
begin
taketail:=q.tail^.data;
q.tail:=q.tail^.prev;
{dispose(t);}
end
else
writeln('empty');
end;

//Копирование списка.
procedure Copy( var e2:Tque; e:Tque {var b:que;});

begin
e2.head:=nil;
e2.tail:=nil;
while e.tail<>nil do
InsertHead(e2,TakeTail(e));
end;
//Соединени 2х списков в 3ем
procedure Connect( var e3:Tque; e2:Tque; e:Tque {var b:que;});
begin
e3.head:=nil;
e3.tail:=nil;
while e.tail<>nil do
begin
f:=TakeTail(e);
InsertHead(e3,f);
end;

while e2.tail<>nil do
begin
f:=TakeTail(e2);
InsertHead(e3,f);
end;
end;
//Разбиение на 2 списка по критерию LL
procedure Prizn( var e3:Tque; var e2:Tque; e:Tque; ll:integer {var b:que;});
begin

e2.head:=nil;
e2.tail:=nil;
e3.head:=nil;
e3.tail:=nil;
while e.tail<>nil do
begin
f:=TakeTail(e);
if f<>ll then InsertHead(e2,f) else begin
j:=i;
while e.tail<>nil do
begin
f:=TakeTail(e);
InsertHead(e3,f);
end;

end;
end;
end;

procedure VS( e:Tque );
begin
while e.tail<>nil do
write(' ',TakeTail(e));
end;


begin
write('Ввести количество элементов: '); readln(k);
q.head:=nil;
q.tail:=nil;
for i:=1 to k do begin
write('Ввести вставляемый элемнет: '); readln(z);
InsertHead(q,z);
end;
Writeln();
Writeln('Созданный список из последовательности:');
vs(q);

Copy(q2,q);
Connect(q3,q2,q);


Writeln();
Writeln('Скопированный список из списка:');
vs(q2);

Writeln();
Writeln('Соединненый список из начального и скопированного:');
vs(q3);

Writeln();
write('Введите признак: '); readln(l);

Prizn(q4,q5,q,l);
Writeln();
Writeln('Разделенные списки по критерию ',l);
vs(q4);
Writeln();
vs(q5);

end.
416
28 декабря 2011 года
MaitreDesir
380 / / 02.01.2008
Здорово, искренне рад. Ну переноси, если надо. А от нас то что хочешь?
Если что то затруднения вызывает - спрашивай, а если хочешь чтобы мы перевели тебе - то тебе в другой раздел (Фриланс).
277
28 декабря 2011 года
arrjj
1.7K / / 26.01.2011
Код:
#include <iostream>
//type Que=^Telem;
//Telem = Record
//Data: integer;
//next:que;
//prev: que;
//end;
struct Telem;
struct Telem
{
int data;
Telem * next;
Telem * prev;
};
//Tque = Record
//head: Que;
//tail: Que;
//end;
struct Tque
{
Telem * head;
Telem * tail;
}
//Переменные в main
//var q,q2,q3,q4,q5:Tque; k,i,z,l,x,f,j:integer;

//push back
void insertTail(Tque &q;int n;)
{
Telem* t=new Telem();
t->data=n;
t->next=NULL;
if(!q.head)
{
t->prev=NULL;
q.head=t;
}
else
{
q.tail->next=t;
t->prev=q.tail;
}
q.tail=t;
}

//push back
//procedure InsertTail( var q:Tque; {var b:que;} n:integer);
//var t:que;
//begin
//new(t);
//t^.data:=n;
//t^.next:=nil;
//if q.head=nil then
//begin
//t^.prev:=nil;
//q.head:=t;
//end
//else
//begin
//t^.prev:=q.tail;
//q.tail^.next:=t;
//end;
//q.tail:=t;
//end;

//push front
void insertHead(Tque &q;int n)
{
Telement t=new Telement();
t->data=n;
t->prev=NULL;
if(!q.tail)
{
t->next=NULL;
q.tail=t;
}
else
{
t->next=q.head;
q.head->prev=t;
}
q.head=t;
}
//procedure InsertHead( var q:Tque; {var b:que;} n:integer);
//var t:que;
//begin
//new(t);
//t^.data:=n;
//t^.prev:=nil;
//if q.tail=nil then
//begin
//t^.next:=nil;
//q.tail:=t;
//end
//else
//begin
//t^.next:=q.head;
//q.head^.prev:=t;
//end;
//q.head:=t;
//end;
//.....

ну и далее по тексту
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог