天天看点

【数据结构】逆转链表

01

前言

数据结构与算法课程是我们学校大二才会开始教学的一门课,但是由于我要参加一些比赛需要用到相关结构与算法,只得提早学习相关知识,了解相关内容。今天开始,每当自己学会一个相关数据结构的操作与算法的内容,我将在公众号中记录下来并且给大家仔细讲解。

再给大家讲解的过程中我自己也能理清相关思路,加深自己对相关内容的理解,一举多得。

在大一上学期的内容中,我们学到了单链表的构造与输出,今天想教大家的是单链表的逆转,这里所有的操作我都将用函数完成,因为在以后的学习或是工作中,我们需要让自己的代码简洁宜读。这样才会更好的融入集体并让集体接纳你的代码。

02

链表逆转

接下来是相关操作的内容了,我先来讲讲链表反转的具体思路

【数据结构】逆转链表

这是我最初的思路,最后能行,但是过程实在繁琐,因为不能通用,我就不发在这里了,这里主要讲我使用递归完成这题的思路。

【数据结构】逆转链表

下面贴出我的代码:

首先是建立链表所需要的结构体

【数据结构】逆转链表

创建链表的函数

【数据结构】逆转链表

输出链表的函数

【数据结构】逆转链表

下面用两种方法写逆转链表的函数

(!!!均未判断空链表)

第一种:递归,每次调用传递两个参数

【数据结构】逆转链表

第二种:循环,每次调用一个参数

【数据结构】逆转链表

最后是主函数

【数据结构】逆转链表

03

结束

其实观察仔细的同学会发现我的循环调用和递归调用的思路是一模一样的,的确,我实在先写出递归逆转之后才将它改写成循环逆转的,只是为了应对不同题的函数的参数调用个数的要求。

过两天将用函数实现链表的增删改查四个基本操作