思路:将一根链表分成两根,一根偶数链,一根奇数链,我们在原链表上找数据域是奇数的结点,找到删掉(不free),然后头插。
找删插的过程
while (p)
{
if (p->date % 2)
{
pk = p;
if (p == h)
{
p=h = h->next;
}
else
{
q->next = p->next;
p = q->next;
}
pk->next = h1;
h1 = pk;
}
else
{
q = p;
p = p->next;
}
}
p从头开始判断,不是奇数的话,p,q联动跑,是的话,我们用pk记住该结点的位置,因为该结点需要准备头插,然后需要判断是删头还是删中间尾,删头需要将p,h同时往后移动,因为p需要判断后续的结点是否为奇数,完了头插,p跑到null循环结束,这时候h所指的那个链表为偶数链表,h1所指的根链表为奇数链表。
这时候将两根链表连起来,完成题目要求
for (t = h1;t->next;t