拆分链接列表

时间:2015-11-09 14:24:29

标签: c

我是C编程的新手,我需要一些帮助 frontBackSplitLinkedList 部分,

例如,假设给定的链表是:2 6 7 8 9 由此产生的正面和背面是: 前:2 6 7 回:8 9

我搜索了一些网站,但大多数编码都是使用节点而不是链表。

知道怎么做吗?谢谢!

2 个答案:

答案 0 :(得分:1)

你实际上不必计算列表中的元素,据我所知,你在_linkedlist中存储了元素的数量。您可以随时使用该值进行拆分。我强烈建议首先简化你的List,这样它只能在List的后面或前面添加元素,它会更容易使用它,但不会真正影响split函数的原理。

答案 1 :(得分:-1)

如果我理解你的问题,那么你想在中间拆分列表,其中不平衡列表将被拆分为比后备列表大一个的前沿列表。

首先,您必须拥有列表长度的计数。我建议你走一下列表,计算一下列表节点的数量。

然后按如下方式划分该数字:

count = (count+1)/2;

现在我们需要知道您是否必须创建两个新列表(因此您必须复制所有列表节点),或者是否可以重用旧列表。假设它可以重复使用,然后您将旧列表分配给frontlist,遍历count列表节点,将其中的一个设置为backlist并设置前一个next成员到NULL

您现在已经完成,但调用者可能不再使用原始列表(它已变为等效,实际上是frontlist)。