思想:用一个移动的结点指针p来逐个遍历结点,每个结点都用头插法,塞到头结点的下一个位置
补充:什么是头插法?
List HeadInsert(List &head) //引用是为了能修改整个表
{
LNode *p = head, &q;
while(p->next != NULL)
{
q = p; //为了保存倒数第二个结点
p = p->next;
}
//此时p指向最后一个结点
LNode *s = head->next; //保存头结点的下一个,防止等等操作之后断链
head->next = p; //头结点指向目标结点
p->next = s; //恢复原来头结点附近的关系
q->next = NULL; //当前最后一个结点指向NULL
return head;
}
原地逆置的思想也是类似的,移动的指针p不断向后移,把每个结点都插入到头结点的下一个