Аватар для iYoung
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 24
1

Слияние упорядоченных списков в третий (найдите ошибку)

21.04.2010, 07:28. Показов 2218. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер , возникла сложность с решением задачи :

Слияние упорядоченных списков в третий. Даны два списка L1 и L2. Считая, что элементы списков упорядоченны по неубыванию, создать третий список L3 из элементов L1 и L2 так, чтобы он тоже был упорядочен по неубыванию.

Пользуясь лекциями и гуглом , я написал какое - то не совсем понятное для меня решение . Проблема заключается в том , что ответ выдает не сосем верный . например , если L1 - 1,2,3 , а L2 - 6,7,8 ,то L3 получается 1,2,3,4,6,7,8 . Не понимаю от куда берется 4 . Заранее спасибо .


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
type
   PList = ^TList; {Ukazatel}
   TList = record { Element }
     info : integer;    { Informacionnaya chast }
     next : PList; { Ukazatel na sled. element }
    end;
VAR
  head1,head2:PList;
  t:integer;
{procedura formiruet spisok so storogem}
Procedure MakeList (var head:PList);
var
  p,last:PList;
  r:integer;
begin
new(head);
last:=head;
readln(R);
  while R<>0 do
   begin
    new(p);
    p^.info:=r;
    last^.next:=p;
    last:=p;
    readln(R);
   end;
 last^.next:=NIL;
end;
 
Procedure PrintList (head:PList);
var
  p:PList;
begin
p:=head^.next;
  while p<>NIL do
   begin
    write (p^.info:6);
    p:=p^.next;
   end;
end;
 
 
{Procedura proizvodit sliyanie 2x spiskov}
Procedure Unite (var head1, head2 : PList);
  var cur : PList;
  begin
 {esli 2 spisok pystoi nichego ne delat}
    if head2<>nil then
      begin
 { esli 1 spisok pystoi to, vixodnim spiskom budet 2}
    if head1=nil then
       head1:=head2
    else  { perebor 1 spiska do poslednego elementa}
     begin  cur:=head1;
      while cur^.next<>nil do
           cur:=cur^.next;
      { Poslednii element 1 spiska ykazivaet na nachalo 2}
      cur^.next:=head2;
     end;
     head2:=nil; { 2 spisok anyliruetsya}
  end;end;
 
begin
 writeln ('vvedite chisla do 0');
 makelist (head1);
 makelist (head2);
 writeln ('pervii spisok');
 printlist (head1);
 writeln ('vtoroi spisok');
 printlist (head2);
 unite (head1,head2);
 writeln ('Otvet-');
 printlist (head1);
readln;
end.
Добавлено через 7 часов 57 минут
никто не поможет ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.04.2010, 07:28
Ответы с готовыми решениями:

Слияние двух упорядоченных списков в один упорядоченный
Даны два списка упорядоченные по не убыванию.Объединить их в третий список упорядоченный по не...

Слияние двух упорядоченных списков
Всем привет! Можете подсказать как делать? Условие: Провести слияние двух упорядоченных списков....

Слияние двух односвязных упорядоченных по неубыванию линейных списков
Разработайте программу слияния двух односвязных упорядоченных по неубыванию линейных списков в один...

Слияние упорядоченных списков
Даны два упорядоченных по возрастанию числовых списка. Объединить их с сохранением упорядоченности....

2
Заблокирован
21.04.2010, 09:40 2
Если использовать не списки,а массивы,то вот так:
begin
k:=1;
i:=1;j:=1;
while ((i<=n) and (j<=m)) do
begin
if a[i]<b[j] then
begin
c[k]:=a[i];
k:=k+1;
i:=i+1;
end
else
if b[j]<a[i] then
begin
c[k]:=b[j];
k:=k+1;
j:=j+1;
end
else
if a[i]=b[j] then
begin
c[k]:=a[i];
c[k+1]:=b[j];
k:=k+2;
i:=i+1;
j:=j+1;
end;
end;
if i>n then
begin
for l:=j to m do
begin
c[k]:=b[l];
k:=k+1;
end;
end;
if j>m then
begin
for l:=i to n do
begin
c[k]:=a[l];
k:=k+1;
end;
end;
1
33 / 33 / 15
Регистрация: 19.04.2010
Сообщений: 40
21.04.2010, 10:45 3
Попробуй заменить в процедуре Unite
Pascal
1
2
{ Poslednii element 1 spiska ykazivaet na nachalo 2}
cur^.next:=head2;
на
Pascal
1
2
{ Poslednii element 1 spiska ykazivaet na nachalo 2}
cur^.next:=head2^.next;
1
21.04.2010, 10:45
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.04.2010, 10:45
Помогаю со студенческими работами здесь

Слияние двух упорядоченных списков с сохранением алфавитного порядка
Задача (TASM): Провести слияние двух упорядоченных списков вида &quot;Фамилия И.О.&quot; с сохранением...

Выполнить пересечение двух упорядоченных по возрастанию списков в третий
Необходимо сделать программу для Visual Prolog, которая выполняет пересечение двух упорядоченных по...

Слияние упорядоченных массивов
Доброго времени суток господа программисты. Помогите пожалуйста решить задачу: Даны два массива с...

Слияние упорядоченных по возрастанию массивов
заданы три упорядоченных по возрастанию массива f(0:n-1), g(0:m-1), h:k-1 Составить программу...

Слияние двух упорядоченных массивов
Задача: Даны упорядоченные массивы a и b из x и y элементов соответственно. Нам требуется...

Слияние двух упорядоченных файлов
Здравствуйте.Помогите пожалуйста решить задачу: Создать два файла А и В из целых чисел. Файл А...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Преобразование полей (элементов управления содержимым) в обычный текст
РоΜа 23.01.2025
Возникла необходимость преобразовать поля в текст (те, что на вкладке разработчик добавляются) . Помучившись родил следующее: Sub ПоляВТекст() Преобразует все поля в текст (даты, текст,. . .
Как проверить существование директории в скрипте Bash
bt_guru 23.01.2025
При разработке скриптов Bash одной из ключевых задач является корректная работа с файловой системой, где особое место занимает проверка существования директорий. Эта операция становится критически. . .
Как работают срезы (slice) в Python
bytestream 23.01.2025
Python предоставляет разработчикам мощный и гибкий инструмент для работы с последовательностями данных - срезы (slices). Эта функциональность позволяет извлекать, модифицировать и управлять. . .
Как удалить подмодуль (submodule) в Git
bytestream 23.01.2025
При работе с крупными проектами в системе контроля версий Git разработчики часто сталкиваются с необходимостью управления зависимостями и внешними компонентами. Подмодули (submodules) представляют. . .
В чем разница между @staticmethod и @classmethod в Python. Декораторы методов
bytestream 23.01.2025
В Python декораторы методов представляют собой мощный инструмент, позволяющий модифицировать поведение функций и методов без изменения их исходного кода. Эта возможность является одной из. . .
Как преобразовать InputStream в String в Java
bytestream 23.01.2025
В мире Java-разработки работа с потоками данных является одной из ключевых операций при создании современных приложений. InputStream, как фундаментальный класс для обработки входных потоков данных,. . .
Как обновить форк (ответвление) репозитория в Git
bytestream 23.01.2025
Одним из наиболее мощных инструментов Git для организации совместной работы является механизм форкинга репозиториев, который позволяет создавать независимые копии проектов для дальнейшей разработки. . . .
Как работает async/await в C#. Асинхронное программировани­е в .NET
bytestream 23.01.2025
Введение в асинхронное программирование Асинхронное программирование представляет собой важнейшую концепцию современной разработки программного обеспечения, особенно в контексте создания. . .
КуМир: полное руководство
bytestream 23.01.2025
Введение в КуМир: история создания и назначение КуМир (Комплект Учебных МИров) представляет собой образовательную среду программирования, которая была создана для обучения основам алгоритмизации и. . .
Что такое OLAP. Где и как использовать многомерный анализ данных
bytestream 23.01.2025
Введение в OLAP-технологии В современном мире бизнес-аналитика и обработка больших массивов данных играют ключевую роль в принятии стратегических решений. Организации накапливают огромные объемы. . .
MongoDB: что это, для чего нужна и как использовать
bytestream 23.01.2025
Введение в MongoDB: современная документоориентированная СУБД В современном мире разработки программного обеспечения выбор правильной системы управления базами данных является критически важным. . .
Как использовать закрытый ключ шифрования в Git. Шифрование в Git
bytestream 23.01.2025
Установка и настройка закрытых ключей в Git предоставляет дополнительный уровень безопасности для работы с репозиториями. Для начала необходимо создать пару ключей, обычно это осуществляется с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru