c语言学习:单链表反转

C语言单链表反转学习记录

        这几天刷题时,单链表反转这道题卡了好几天,虽然很多很多代码网上都有,但学起来和理解起来反转也用了挺久,在博客记录一下我的学习过程。

        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!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值