6-5 逆置单链表(递归法)

逆置单链表(递归法)

函数接口定义:

 

LinkList reverse(LinkList L);

裁判测试程序样例:

 

#include<iostream> using namespace std; typedef int ElemType; typedef struct LNode { ElemType data; struct LNode *next; } LNode, *LinkList; void CreateList(LinkList &L, int n) { LinkList p, r; int length; L = new LNode; cin >> L->data; L->next = NULL; r = L; length = 1; while (length<n) { p = new LNode; cin >> p->data; p->next = NULL; r->next = p; r = p; length++; } } void print(LinkList L) { LinkList p; int flag=1; p = L; while (p) { if(flag) cout << p->data; else cout << " "<< p->data; flag=0; p = p->next; } } LinkList reverse(LinkList L); int main() { LinkList L; ElemType e; int length; cin >> length; CreateList(L, length); L=reverse(L); print(L); return 0; } /* 请在这里填写答案 */

输入样例:

第一行输入一个数n,第二行输入n个数。

12
19 14 23 1 68 20 84 27 55 11 10 79

输出样例:

输出逆置后单链表结点值。

79 10 11 55 27 84 20 68 1 23 14 19

题解:

LinkList reverse(LinkList L) {
 if (L==NULL || L->next==NULL)
    return  L;
 LinkList sum = reverse(L->next);

 L->next->next=L;
 L->next=NULL;
 return sum;

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值