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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2015, 12:30   #1
INShcherbakov
Пользователь
 
Регистрация: 13.12.2014
Сообщений: 14
По умолчанию Слияние двух упорядоченных списков.

Всем привет!
Можете подсказать как делать?
Условие: Провести слияние двух упорядоченных списков. В качестве элементов первого списка взять буквы фамилии (Щербаков), в качестве элементов второго списка взять буквы имени (Иван).
INShcherbakov вне форума Ответить с цитированием
Старый 04.01.2015, 14:49   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Как по мне совершенно непонятно о каком слиянии идет речь и как построены списки...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.01.2015, 15:00   #3
INShcherbakov
Пользователь
 
Регистрация: 13.12.2014
Сообщений: 14
По умолчанию

вот аналогичный пример:
Цитата:
Провести слияние двух упорядоченных списков. В качестве элементов первого списка взять буквы фамилии (полностью), в качестве элементов второго списка взять буквы имени (полностью).
Составим первый список из упорядоченных букв фамилии: веенорст
Пусть head1 указывает на первый элемент “в” этого списка.
Пусть p1 – указатель на текущий элемент этого списка.
Составим второй список из упорядоченных букв имени: аадеклнрс
Пусть head2 указывает на первый элемент “а” этого списка.
Пусть p2 – указатель на текущий элемент этого списка.
Пусть head3 указывает на первый элемент нового списка. Сначала head3 = nil
Пусть p3 – указатель на текущий элемент нового списка.
Пусть каждый элемент списков представляет из себя структуру с полями:
data – информационная часть,
next – указатель на следующий элемент списка.
Установим текущие указатели на начала списков:
P1 := head1;
P2 := head2;
Проверяем P1^.data <= P2^.data? нет.
И Head3 = nil, а значит head3 := p2; p3 := p2; P2 := p2^.next
Получаем третий список: а
Проверяем P1^.data <= P2^.data? нет.
Значит p3^.next := p2; p3 := p2; P2 := p2^.next
Получаем третий список: аа
Проверяем P1^.data <= P2^.data? да.
Значит p3^.next := p1; p3 := p1; P1 := p1^.next
Получаем третий список: аав
Проверяем P1^.data <= P2^.data? нет.
Значит p3^.next := p2; p3 := p2; P2 := p2^.next
Получаем третий список: аавд
Проверяем P1^.data <= P2^.data? да.
Значит p3^.next := p1; p3 := p1; P1 := p1^.next
Получаем третий список: аавде
Проверяем P1^.data <= P2^.data? да.
Значит p3^.next := p1; p3 := p1; P1 := p1^.next
Получаем третий список: аавдее
Проверяем P1^.data <= P2^.data? нет.
Значит p3^.next := p2; p3 := p2; P2 := p2^.next
Получаем третий список: аавдеее
Проверяем P1^.data <= P2^.data? нет.
Значит p3^.next := p2; p3 := p2; P2 := p2^.next
Получаем третий список: аавдееек
Проверяем P1^.data <= P2^.data? нет.
Значит p3^.next := p2; p3 := p2; P2 := p2^.next
Получаем третий список: аавдееекл
Проверяем P1^.data <= P2^.data? да.
Значит p3^.next := p1; p3 := p1; P1 := p1^.next
Получаем третий список: аавдеееклн
Проверяем P1^.data <= P2^.data? нет.
Значит p3^.next := p2; p3 := p2; P2 := p2^.next
Получаем третий список: аавдеееклнн
Проверяем P1^.data <= P2^.data? да.
Значит p3^.next := p1; p3 := p1; P1 := p1^.next
Получаем третий список: аавдеееклнно
Проверяем P1^.data <= P2^.data? да.
Значит p3^.next := p1; p3 := p1; P1 := p1^.next
Получаем третий список: аавдеееклннор
Проверяем P1^.data <= P2^.data? нет.
Значит p3^.next := p2; p3 := p2; P2 := p2^.next
Получаем третий список: аавдеееклннорр
Проверяем P1^.data <= P2^.data? да.
Значит p3^.next := p1; p3 := p1; P1 := p1^.next
Получаем третий список: аавдеееклнноррс
Проверяем P1^.data <= P2^.data? нет.
Значит p3^.next := p2; p3 := p2; P2 := p2^.next
Получаем третий список: аавдеееклнноррсс
P2 = nil, а значит второй список закончился. Добавим остаток первого списка к новому списку.
Значит p3^.next := p1
Получаем третий список: аавдеееклнноррсст

Последний раз редактировалось Stilet; 04.01.2015 в 16:18.
INShcherbakov вне форума Ответить с цитированием
Старый 04.01.2015, 16:20   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
вот аналогичный пример:
Это в методичке такое написано? Я ничего не понял.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.01.2015, 18:58   #5
INShcherbakov
Пользователь
 
Регистрация: 13.12.2014
Сообщений: 14
По умолчанию

Это в уже сданной контрольной, в примере использовано ФИО: Нестеров Александр
INShcherbakov вне форума Ответить с цитированием
Старый 04.01.2015, 19:19   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Провести слияние двух упорядоченных списков. В качестве элементов первого списка взять буквы фамилии (Щербаков), в качестве элементов второго списка взять буквы имени (Иван).
Дык очень просто..
Сортируем Иван : авин
Сортируем Щербаков : абвекорщ

Получаем два списка : авин, абвекорщ
В конец (ради прикола) добавим ('я'+1)
Берем два указателя.. Ставим на начало двух списков
Сравниваем элементы (интересно как это правильно произносить), на которые указатель указывает.. (блин.. это воистину так по-идиотски звучит?) Берем наибольший.. Если равны, то пофигу.. берем любой (не забываем смещать указатель)..
И тогда :
Код:
                     авин   абвекорщ
a                    вин    абвекорщ
aa                   вин    бвекорщ
aaб                  вин    векорщ
aaбв                 ин     векорщ
aaбвв                ин     екорщ
аабвве               ин     корщ
Вот-с.. Остальное на Вашей совести..

Яхуууу! Я сделал это!! Дааа! Да!! Да!!! Правильно сделал табличку! Яху! Фух! Праздник!
Poma][a вне форума Ответить с цитированием
Старый 04.01.2015, 20:31   #7
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Дык очень просто..
Сортируем Иван : авин
Сортируем Щербаков : абвекорщ
Гений, блин)))
Smogg вне форума Ответить с цитированием
Старый 04.01.2015, 20:40   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Гений, блин)))
А чёйта Вам не нравится?
Списки должны быть упорядочены, нам дают неупорядоченный. Что мы должны сделать? Совершенно верно! Отсортировать!
Poma][a вне форума Ответить с цитированием
Старый 04.01.2015, 22:16   #9
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
А чёйта Вам не нравится?
Да я совершенно искренне) Без подвохов)
Smogg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слияние упорядоченных списков в третий на Паскале fkty Помощь студентам 4 25.05.2013 23:28
Слияние списков Rom@shka Общие вопросы C/C++ 5 07.05.2009 20:24
слияние списков counter Общие вопросы C/C++ 4 02.01.2009 22:47