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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2013, 17:47   #1
scoprion
 
Регистрация: 12.03.2010
Сообщений: 6
По умолчанию Динамические структуры данных

Разработать алгоритм слияния двух цепных списков, элементы которых расположены в порядке возрастания.

Не могу понять как объединить эти 2 списка.

Код:
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
type
 
TPStudent=^TStudent;
TStudent = record
  f_name,f1_name:string;
  l_name,l1_name:string;
  next,next1,next2: TPStudent;
 
 
end;
 
var head,head1,head2,curr,curr1,node,node1,node2: TPStudent;
 
procedure TForm1.Button1Click(Sender: TObject);
var
node: TPStudent;
//curr: TPStudent;
pre: TPStudent;
begin
new(node);
node^.f_name:=Edit1.Text;
node^.l_name:=Edit2.Text;
curr:=head;
pre:=NIL;
while (curr <> NIL) and (node.f_name > curr^.f_name) do
begin
pre:= curr;
curr:=curr^.next;
 
end;
if pre = NIL then begin
node^.next:=head;
head:=node;
end else begin
node^.next:=pre^.next;
pre^.next:=node;
end;
Edit1.text:='';
Edit2.text:='';
Edit1.SetFocus;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var
curr: TPStudent;
n:integer;
st:string;
begin
n:=0;
st:= '';
curr:=head;
while curr <> NIL do
begin
n:=n+1;
st:=st+curr^.f_name+' '+curr^.l_name+#13;
curr:=curr^.next;
end;
if n <> 0 then ShowMessage('Список: '+#13+st)
else ShowMessage('В списке нет элементов.');
end;
 
 
procedure TForm1.Button3Click(Sender: TObject);
var
node1: TPStudent;
//curr1: TPStudent;
pre1: TPStudent;
begin
new(node1);
node1^.f1_name:=Edit3.Text;
node1^.l1_name:=Edit4.Text;
curr1:=head1;
pre1:=NIL;
while (curr1 <> NIL) and (node1.f1_name > curr1^.f1_name) do
begin
pre1:= curr1;
curr1:=curr1^.next1;
end;
if pre1 = NIL then begin
node1^.next1:=head1;
head1:=node1;
end else begin
node1^.next1:=pre1^.next1;
pre1^.next1:=node1;
end;
Edit3.text:='';
Edit4.text:='';
Edit3.SetFocus;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
var
//curr1: TPStudent;
n1:integer;
st1:string;
begin
n1:=0;
st1:= '';
curr1:=head1;
while curr1 <> NIL do
begin
n1:=n1+1;
st1:=st1+curr1^.f1_name+' '+curr1^.l1_name+#13;
curr1:=curr1^.next1;
end;
if n1 <> 0 then ShowMessage('Список: '+#13+st1)
else ShowMessage('В списке нет элементов.');
 
end;
 
procedure TForm1.Button5Click(Sender: TObject);
 
 
end;
 
procedure TForm1.FormActivate(Sender: TObject);
begin
head:=NIL;
head1:=NIL;
head2:=NIL;
end;
 
end.
Вложения
Тип файла: rar Динамические структуры данных.rar (171.7 Кб, 6 просмотров)
scoprion вне форума Ответить с цитированием
Старый 28.11.2013, 17:59   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Не могу понять как объединить эти 2 списка.
Они должны быть слиты отсортированными?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.11.2013, 18:01   #3
scoprion
 
Регистрация: 12.03.2010
Сообщений: 6
По умолчанию

да это слияния двух цепных списков, я также хотел сначала объединить, потом отсортировать, но по условию это неправильно.
scoprion вне форума Ответить с цитированием
Старый 28.11.2013, 18:15   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот что я предлагаю: http://www.programmersforum.ru/showt...279#post713279
Тут есть пример вставки элемента в определенное место списка.
Вот ты в цикле проходи по первому списку, бери значение ищи его в новом слитом списке. Если не найдено - вноси в хвост. Если найдено значение больше этого вноси перед ним. Потом тоже самое со вторым списком. Так и получишь отсортированный список.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические структуры данных Zaraaa Помощь студентам 5 26.10.2013 09:59
Динамические структуры данных. inc Общие вопросы C/C++ 3 03.12.2012 19:39
Динамические структуры данных, списковые структуры (надо разобраться что делает программа) _4Alex4_ Помощь студентам 1 14.11.2012 07:39
Динамические структуры данных Yashanov Помощь студентам 1 29.04.2009 10:11