Если я правильно понимаю ваш вопрос, то вы хотите разбить список посередине, где неравномерный список будет разделен на передний список, который будет больше, чем задний список.
Прежде всего, вы должны иметь счетчик длины списка. Я предлагаю вам пройти список, подсчитывая количество узлов списка.
Затем разделите это число следующим образом:
count = (count+1)/2;
Теперь нам нужно знать, если вы должны создать два новых списков (так что вы должны сделать копии всех списков узлов), или старый список могут быть повторно использованы. Предположим, что он может быть повторно использован, тогда вы назначаете старый список frontlist
, пройдите count
listnodes, присвойте его одному backlist
и установите член next
того, который был перед ним, до NULL
.
Выполнено сейчас, за исключением того, что вызывающий абонент может больше не использовать исходный список (он стал эквивалентным и фактически равен frontlist
).
Узлы - это то, что _make up_ связанный список в первую очередь –