思路:
1.找到头结点
2.依次遍历每个结点,并且每次都插到第一个结点之后
3.头结点.next = NULL;称为尾节点
循环方式代码实现:
List func(List head)
{
if(!head) //如果为空链表,无须操作
{
return head;
}
List pre = head; //把头结点给了pre
List cur = pre.next;
List tmp; //定义一个结点以便循环幅值使用
pre.next = NULL; //将首结点的next置空,循环结束后,成为尾结点
while(NULL != cur) //一直循环,直到遇见尾结点
{
//以下三条代码,将当前结点插到头结点之前
tmp = cur;
tmp.next = pre;
pre = tem;
cur = cur.next; //遍历每个结点
}
return pre; //返回头结点
}
如有错误请大家提出,明天写递归方式的实现。
递归算法的实现:
List *func(List *oldList,List *newHead = NULL)
{
List *next = oldList->next;
oldList->next = newHead;
newHead = oldList;
return (next == NULL)?newHead:func(t,newHead);
}