1.问题描述
- 设计算法将一个带头结点的单链表L1分解为两个具有相同结构的链表L2、L3,其中L2表的结点为L1表中值小于零的结点,而L3表的结点为L1表中值大于零的结点(链表L1中的元素为非零整数,要求L2、L3表利用L1表的结点)。
2.题目分析
- L2表的头结点使用原来L1表的头结点,为L3表新申请一个头结点。从L1表的第一个结点开始,依次取其每个结点p,判断结点p的值是否小于0,利用前插法,将小于0的结点插入L1表,大于等于0的结点插入L3表。
// 链表分解
void DisCompose(LinkList &L1, LinkList &L2, LinkList &L3)
{
LNode *p;
p = L1->next; // p为工作指针
L2 = L1;
L2->next = NULL; // L2表初始化
L3 = new LNode; // 为L3申请结点空间
L3->nex