这几天刷题时,单链表反转这道题卡了好几天,虽然很多很多代码网上都有,但学起来和理解起来反转也用了挺久,在博客记录一下我的学习过程。
1、先看题目:
{ 根据一个整数序列构造一个单链表,然后将其反转。
例如:原单链表为 2 3 4 5 ,反转之后为5 4 3 2
输入描述:输入包括多组测试数据,每组测试数据占一行,第一个为大于等于0的整数n,表示该单链表的长度,后面跟着n个整数,表示链表的每一个元素。整数之间用空格隔开
输出描述:针对每组测试数据,输出包括两行,分别是反转前和反转后的链表元素,用空格隔开
如果链表为空,则只输出一行,list is empty }
2、编程思路:根据题目我们知道这道题是让我们构造一个单链表让他反转,所以很自然就能知道分为两步,创建链表以及反转链表,把这两个步骤写成两个函数在主函数中调用即可
3、代码实现:首先是创建链表环节
按照题目讲述需要输入两个量一个是链表长度,另一个就是这个链表中得内容。
在输入链表内容时记得用for循环输入,不然可能会出现生成的链表只有最后一个数的情况。
通过这个函数就能够创建好链表了,附上代码:

完成了链表创建工作就进行链表的反转,我用的是最多人使用的双指针法,对于这个方法怎么用不在这赘述,感兴趣的可以去看这个博主的讲解我认为讲的足够清晰。简单、清晰、明了,图解单链表反转 - 知乎
https://zhuanlan.zhihu.com/p/105749135注意是将创建好的链表进行反转,所以函数头要用**head。 附上代码:

写好这两个关键函数就只需要再写一个输出函数和在主函数中调用即可
打印结果的函数,附上代码:

主函数:

最后几行是要满足网页输入的要求,如果只是在vs中运行,实测删除了也不影响输出。
这几天链表的学习也算是告一段落,不会的知识还有很多,还是要继续努力,fighting!
C语言单链表反转学习记录
520

被折叠的 条评论
为什么被折叠?



