C语言 将带头结点的单链表A,分解为两个带头结点的A,B两个单链表
A链表中为原链表序号为奇数的节点,B中含有原链表序号为偶数的节点
原理
在遍历原链表的同时,同时让I变量自加,当I为偶数时,把当前节点插入到B链表中
如果对你有帮助,点个赞呗
实现代码
结构体
typedef struct SqNode {
int data;
struct SqNode * Next;
}SqNode,*SqList;
功能函数
SqList BreakdownList(SqNode* L, SqNode*P)
{
/*
第一个参数:第一个链表的首地址
第二个参数:第二个链表的首地址
函数功能:使L中链表序号为奇数的保留在L中,序号为偶数插入P中
*/
SqList s;
SqList q;
SqList p;
int i = 0;
s = L->Next;
p = P;
while (s->Next!=NULL)
{
if (i % 2 == 0)//当i为偶数时使节点插入P中(尾插法)
{
q = s->Next;
s->Next = s->Next->Next;
p->Next= q;
p = q;
}
else//否则不变
{
s = s->Next;
}
i++;
}
p->Next = NULL;
return L;
}