2015-11-09 2 views
1

Я новичок в программировании C и я вроде нужна помощь в frontBackSplitLinkedList части,Split Связанный список

Например, предположим, что данный связанный список: 2 6 7 8 9 Полученный фронт и назад: спереди: 2 6 7 назад: 8 9

Я просматривал некоторые веб-сайты, но большинство кодировок используют узлы вместо связанного списка.

Любая идея, как это сделать? Спасибо!

+3

Узлы - это то, что _make up_ связанный список в первую очередь –

ответ

-1

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

Прежде всего, вы должны иметь счетчик длины списка. Я предлагаю вам пройти список, подсчитывая количество узлов списка.

Затем разделите это число следующим образом:

count = (count+1)/2; 

Теперь нам нужно знать, если вы должны создать два новых списков (так что вы должны сделать копии всех списков узлов), или старый список могут быть повторно использованы. Предположим, что он может быть повторно использован, тогда вы назначаете старый список frontlist, пройдите count listnodes, присвойте его одному backlist и установите член next того, который был перед ним, до NULL.

Выполнено сейчас, за исключением того, что вызывающий абонент может больше не использовать исходный список (он стал эквивалентным и фактически равен frontlist).

+0

Код показывает, что размер поддерживается для связанного списка, поэтому нет причин «ходить по списку, подсчитывая количество узлов списка». Вам также необходимо обновить это значение как часть разделения. – GroovyDotCom

1

На самом деле вам не нужно подсчитывать элементы в списке, насколько я вижу, вы храните количество элементов в _linkedlist. Вы всегда можете использовать это значение для разделения, как вам нравится. Я бы настоятельно рекомендовал сначала упростить ваш список, поэтому он может добавлять элементы только к спине или к фронту списка, с ним будет легче работать, но на самом деле не повлияет на принцип функции split.

Смежные вопросы