简单c语言练习(第二期)

分享一些练习题和大致解题思路(C语言)

分享的题基本都是各大网站,或者丛书中出的比较优秀的题,或者是博主看到的写过的一些题,由于博主也是一位刚入门的萌新,水平有限,现在可能不会出什么非常难的题,但是对于初入c语言的学员应该会有些帮助,好的现在开始(答案会放在另一个分组中,答案会是博主自己手打的,可能会有错误或者更优解也非常欢迎探讨交流一番)


题目

  1. 有一张单链表,编写函数求倒数第k个结点

  2. 编写函数,要求逆置单链表

  3. 如何快速查找一个单链表的中间位置,编写函数实现


解题思路

由于三道题都是要求单链表,那就要先实现单链表之后才能做题

  1. 一个单链表有多长是不清楚的,虽然说可以先求出有多少个结点,然后找倒数第k个,但是这种写法应该入不了出题人的法眼。可以定义两个指针,先让一个向前走k-1步,然后两个一起往后走,知道先走的到达最后一个结点,后走的就刚好走到了倒数第k个结点

  2. 第二题比较复杂,看博主写的图
    在这里插入图片描述

  3. 如何快速找到中间的结点,同第一题,数节点个数当然满足不了题目快速的要求,还是定义两个指针,让一个指针一次走两个结点,另一个指针一次走一个结点,这样当走的快的指针到达最后一个结点或者为空了(结点个数可能是奇数或偶数),则走的慢的结点到达中间位置。


总结

感觉很多地方都用到了双指针法,这样确实增快了代码运行的速度,可以多感受感受,练习一下双指针法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值