反转单链表 递归与非递归
// 链表结构
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);
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步