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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Графический вывод списка
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской

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


Помогите с задачей плиз, а то уже скоро сессия=(
Задача: Создать 2 списка, потом их отсортировать, и эти два отсортированных списка слить в один - 3-ий так, чтобы он был сразу отсортированным. И самая жесть, это реализовать графический (unit Graph) вывод списка!
У меня сделано создание списков, их сортировка, слияние даже обычное не получается, а графический вывод вообще не знаю как сделать=(

Вот моя программа, надо переделать процедуру Unite и еще сделать процедуру графического вывода

uses Crt;
type plist = ^list;
list = record
info: integer;
link: plist;
end;
var
f1,f2,f3,top:plist;
procedure rdlist(var lst: plist);
var p,q,s: plist;
buf: integer;
function rdint(var buf:integer):Boolean;
begin
{$i-}
read(buf);
rdint:=IOResult=0;
{$i+}
end;{rdint}
begin
q:=nil;
while rdint(buf) do
begin
new(s);
s^.info:=buf;
s^.link:=q;
q:=s;
end;
p:=nil;
while q<>nil do
begin
s:=q; q:=q^.link;
s^.link:=p; p:=s;
end;
lst:=p;
end; {rdlist}
procedure wrlist(f:plist);
begin
if f<>nil then
begin
write (f^.info, ' ');
wrlist (f^.link);
end;
end;
Function Sort(head : plist) : plist;
var newh, max, prev, pmax, cur : plist;
begin
newh:=nil;
while head<>nil do
begin
max:=head;
prev:=head;
cur:=head^.link;
while cur<>nil do
begin
if cur^.info>max^.info then
begin
max:=cur;
pmax:=prev;
end;
prev:=cur; cur:=cur^.link;
end;
if max=head then head:=head^.link
else pmax^.link:=max^.link;
max^.link:=newh; newh:=max;
end;
Sort:=newh;
end;
Procedure Unite (var cur, head1, head2 : plist);
begin
if head2<>nil then
begin
if head1=nil then
head1:=head2 else
begin
cur:=head1;
while cur^.link<>nil do
begin
cur^.info:=head1^.info;
cur:=cur^.link;
head1:=head1^.link;
end;
cur^.link:=head2;
end;
head2:=nil;
end;
end;
BEGIN
clrscr;
write('Spisok 1(letter for exit) = ');
rdlist(f1);
wrlist(f1);
writeln;
write('Spisok 2(letter for exit) = ');
rdlist(f2);
wrlist(f2);
writeln;
write('Otsortirovanni spisok 1 = ');
f1 := sort(f1);
wrlist(f1);
writeln;
write('Otsortirovanni spisok 2 = ');
f2:= sort(f2);
wrlist(f2);
writeln;
write('Novi spisok = ');
unite(f3,f1,f2);
wrlist(f3);
readln;
readln;
end.


М
Используй теги для программных текстов!
-- Лопарь



Прикрепленные файлы
Прикрепленный файл  new_spisok.pas ( 2.46 килобайт ) Кол-во скачиваний: 238
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 1)
сообщение
Сообщение #2


Гость






Цитата
а то уже скоро сессия
Ты знаешь, вот это как-то нас интересует меньше всего... Скоро у тебя сессия, или не очень - это твоя проблема. Ты ж раньше чем-то занимался? Наверняка чем-то другим, более интересным, да? А теперь вот приходится в спешном порядке долги закрывать? Ну, что ж поделаешь...

А по теме - на форуме неоднократно выкладывались программы сортировки списков, + к этому (насколько я помню) я приводил программу, сливающую 2 списка в один без нарушения упорядоченности (попробую найти ссылку).

Что касается графического представления списка - то можешь посмотреть вот тут: Графическое представление бинарного дерева , в принципе, идею уловить можно, но вот переписывать я ее для списков не буду... Хочешь - начни переделывать, что не будет получаться - спрашивай, подскажем...

Update: я ж говорю, что видел ту процедуру слияния: динамическая структура данных

А вот тут - то, что я делал: Объединение 2 упорядоченных списков

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 

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

 





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