我是C编程的新手,我需要一些帮助 frontBackSplitLinkedList 部分,
例如,假设给定的链表是:2 6 7 8 9 由此产生的正面和背面是: 前:2 6 7 回:8 9
我搜索了一些网站,但大多数编码都是使用节点而不是链表。
知道怎么做吗?谢谢!
答案 0 :(得分:1)
你实际上不必计算列表中的元素,据我所知,你在_linkedlist中存储了元素的数量。您可以随时使用该值进行拆分。我强烈建议首先简化你的List,这样它只能在List的后面或前面添加元素,它会更容易使用它,但不会真正影响split函数的原理。
答案 1 :(得分:-1)
如果我理解你的问题,那么你想在中间拆分列表,其中不平衡列表将被拆分为比后备列表大一个的前沿列表。
首先,您必须拥有列表长度的计数。我建议你走一下列表,计算一下列表节点的数量。
然后按如下方式划分该数字:
count = (count+1)/2;
现在我们需要知道您是否必须创建两个新列表(因此您必须复制所有列表节点),或者是否可以重用旧列表。假设它可以重复使用,然后您将旧列表分配给frontlist
,遍历count
列表节点,将其中的一个设置为backlist
并设置前一个next
成员到NULL
。
您现在已经完成,但调用者可能不再使用原始列表(它已变为等效,实际上是frontlist
)。