2015-11-09 62 views
1

我是新的C语言编程,我还挺需要在frontBackSplitLinkedList部分一些帮助,拆分链表

例如,假设给定的链接列表为:2 6 7 8 9 产生的正面和返回: 正面:2 6 7 背面:8 9

我已经通过一些网站搜索,但大多数编码使用节点,而不是链接列表。

任何想法如何做到这一点?谢谢!

+3

节点是_make up_链接列表首先 –

回答

-1

如果我正确地理解了你的问题,那么你想在中间拆分列表,其中不平坦列表将被拆分成比后退列表大一个的前列表。

首先,你必须有一个列表长度的计数。我建议你走清单,统计列表节点的数量。

然后你把这个数字如下:

count = (count+1)/2; 

现在,我们需要知道,如果你必须创建两个新的列表(所以你必须让所有的列表中的节点的副本),还是旧列表可能会被重复使用。假设它可能会被重用,那么您将旧列表分配到frontlist,步行count列表节点,将其分配给backlist,并将其之前的那个的next成员设置为NULL

现在你已经完成了,除了呼叫者可能不再使用原始列表(它已经变成等价物,实际上是frontlist)。

+0

代码显示链接列表的大小正在维护,因此没有理由“走路列表,计算列表节点的数量”。您还需要将此值更新为拆分的一部分。 – GroovyDotCom

1

您实际上不需要对列表中的元素进行计数,就我所见,您将_linkedlist中的元素数量存储起来。不管你喜欢,你总是可以使用这个值来分割。我强烈建议首先简化你的列表,这样它可以将元素仅添加到列表的后面或前面,它将更容易使用它,但不会真正影响分割函数的原理。