c语言递归链表逆序,链表逆序的递归实现

本文介绍了如何使用递归算法实现链表的逆序操作,包括常规的迭代方法和进阶的递归方法。通过递归,可以简洁地解决链表逆序问题,但需要注意递归过程中的指针操作,防止错误。
摘要由CSDN通过智能技术生成

链表逆序是个很基础的算法,考察的是指针操作和基本数据结构。常规的写法当然是OK的,不过要是还会写出一个递归的链表逆序算法,那别人肯定要给你点个赞了。

1 问题描述

给定一个链表,请将其逆序。即如果链表原来为1->2->3->4->5->null,逆序后为5->4->3->2->1->null.

2 常规写法(迭代)

迭代算法效率较高,但是代码比递归算法略长。递归算法虽然代码量更少,但是难度也稍大,不细心容易写错。迭代算法的思想就是遍历链表,改变链表节点next指向,遍历完成,链表逆序也就完成了。代码如下:

struct node {

int data;

struct node* next;

};

typedef struct node* pNode;

pNode reverse(pNode head)

{

pNode current = head;

pNode next = NULL, result = NULL;

while (current != NULL) {

next = current->next;

current->next = result;

result = current;

current = next;

}

return result;

}

如果不返回值,可以传递参数改为指针的指针,直接修改链表的头结点值(如果在C&

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值