Страница 1 из 1

Двунаправленные связанные списки

СообщениеДобавлено: 24.02.2014 22:57:41
vladok00777
Здравствуйте! Кто может поделиться знаниями по вопросу: сложение длинных целых чисел при помощи двунаправленных связанных списков? Как это можно реализовать в программе?

Re: Двунаправленные связанные списки

СообщениеДобавлено: 25.02.2014 08:43:57
SSerge
Это вы о чём? О работе с целыми переменной разрядности или о чём? При чем здесь списки и сложение?

Re: Двунаправленные связанные списки

СообщениеДобавлено: 25.02.2014 09:32:21
xdsl
Задачами такого типа грузят обычно на младших курсах технических специальностей вузов при изучении абстрактных структур данных. Суть здесь не сложении, а в закреплении понятия "двусвязный список" на псевдореалистичных задачах. Скорее всего так.

vladok00777: Без условия задачи Вам вряд-ли кто поможет.

Re: Двунаправленные связанные списки

СообщениеДобавлено: 25.02.2014 10:25:36
debi12345
Наверное имеются ввиду числа неограниченной разрядности, представленные в виде списков (почему то не массивов).

Re: Двунаправленные связанные списки

СообщениеДобавлено: 25.02.2014 10:27:48
xdsl
debi12345 писал(а):Наверное имеются ввиду числа неограниченной разрядности, представленные в виде списков (почему то не массивов).

То-же так думаю, но гадать бессмысленно, надеюсь автор топика выложит условие.

Re: Двунаправленные связанные списки

СообщениеДобавлено: 25.02.2014 11:24:39
NTFS
Сначала нужно научиться делать двунаправленные списки. Из хардкорного - первый том Кнута, из попсового - Яндекс подскажет.
Потом вспомнить сложение в столбик. как учили в школе.
И наконец, соединить эти два подхода.
Это то, что могу рассказать за карму на форуме.

В виде конкретных строчек кода, где-то на 400-500 рублей потянет.

Re: Двунаправленные связанные списки

СообщениеДобавлено: 25.02.2014 12:18:52
xdsl
По спискам лучше без хардкора. У дедушки Вирта все достаточно внятно изложено. Как и у Ахо. И у обоих на псевдопаскале, так что проблем особых быть не должно.

Re: Двунаправленные связанные списки

СообщениеДобавлено: 25.02.2014 14:21:30
debi12345
То-же так думаю, но гадать бессмысленно, надеюсь автор топика выложит условие.

Кстати если сделать это (добавив прочие матоперации) без промежуточной конверсии в строковый тип и используя MMX/SSE/AVX (то есть очень быстрым алгоритмом) - это стало бы очень полезной контрибуцией.

Добавлено спустя 14 минут 1 секунду:
Матаппарат по теме:
http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic

Добавлено спустя 5 минут 59 секунд:
Кстати, С и Pascal - чуть ли не единственные из популярных языков, не поддерживающие этот тип данных. Так что есть простор сделать очень полезную контрибуцию :)

Re: Двунаправленные связанные списки

СообщениеДобавлено: 25.02.2014 20:06:07
Mirage
debi12345 писал(а):Кстати, С и Pascal - чуть ли не единственные из популярных языков, не поддерживающие этот тип данных. Так что есть простор сделать очень полезную контрибуцию :)


Если на страничке в педивикии чего-то не указано, это не значит, что этого нет.
Вот например либа с реализацией чисел неограниченной разрядности :
http://code.google.com/p/delphilhlplib/

Re: Двунаправленные связанные списки

СообщениеДобавлено: 25.02.2014 21:10:24
xdsl
Куда-то ходить и чего-то качать для поддержки длинных чисел не надо, все уже давно во freepascal есть: модуль gmp из packages, читаем здесь: http://wiki.freepascal.org/gmp и здесь: https://gmplib.org/

Re: Двунаправленные связанные списки

СообщениеДобавлено: 25.02.2014 21:34:56
Sergei I. Gorelkin
mparith тоже работает из коробки, хоть и не входит в комплект fpc.

Re: Двунаправленные связанные списки

СообщениеДобавлено: 25.02.2014 23:00:42
debi12345
модуль gmp из packages

Ага - цепляя C-ую DLL-ку. Только что глянул - есть SSE2, написана хорошо - где нужно на Assembler-e. В апкаминге будет и AVX[2]. Очень круто ! Вот бы эти парубки решили переписать FPC-ую арифметику.

http://code.google.com/p/delphilhlplib/

BigInteger and BigCardinal ?
SSE/AVX есть ?

Re: Двунаправленные связанные списки

СообщениеДобавлено: 25.02.2014 23:28:40
Mirage
На ассемблере не кроссплатформенно. Сейчас уже нельзя только на x86 ориентироваться. По крайней мере библиотекам.
Нужно чтобы компилятор заботился об оптимизации.

Re: Двунаправленные связанные списки

СообщениеДобавлено: 26.02.2014 00:04:57
debi12345
На ассемблере не кроссплатформенно. Сейчас уже нельзя только на x86 ориентироваться.

Трудно сказать. Возможно скоро ARM-у наступит хана. Intel начиная с Haswell сфокусировался на сверэкономичных процах с мощной (пригодной для серьезных игр) интегрированной графикой - даже регуляторы напряжения с катушками индуктивности умудрился в ЦПУ-корпус ингтегрировать. Как народу нравится 20 импульсных инверторов с частотой преобразования более 100 МГц на одном кристалле ?

Добавлено спустя 3 часа 19 минут 48 секунд:
Зря опасались, GMP-команда поработала славно - есть ассемеблерные вставки для всех процов, подерживаемых GCC.