反转单链表 递归与非递归

// 链表结构

struct List { struct List* nextl int key; };

// 递归实现反转链表

List *reverse(List *oldList, List *newHead=NULL)
{

// 记录剩余的链表 (检查oldList是否为空,能处理输入的链表头指针为空的情况)
List *next = oldList->next;

// 将当前的节点插入到newHead链表的开头
oldList->next = newHead;
newHead = oldList; 

// 递归处理剩余的链表
return (next==NULL)? newHead: reverse(oldList->next, newHead); //能够处理只有一个结点的情况

}

void main()
{
List *list;
// 调用的时候newHead使用默认的NULL
List *q = reverse(list);
}

原文地址:https://www.cnblogs.com/javaadu/p/11742650.html