分享一些练习题和大致解题思路(C语言)
分享的题基本都是各大网站,或者丛书中出的比较优秀的题,或者是博主看到的写过的一些题,由于博主也是一位刚入门的萌新,水平有限,现在可能不会出什么非常难的题,但是对于初入c语言的学员应该会有些帮助,好的现在开始(答案会放在另一个分组中,答案会是博主自己手打的,可能会有错误或者更优解也非常欢迎探讨交流一番)
题目
-
有一张单链表,编写函数求倒数第k个结点
-
编写函数,要求逆置单链表
-
如何快速查找一个单链表的中间位置,编写函数实现
解题思路
由于三道题都是要求单链表,那就要先实现单链表之后才能做题
-
一个单链表有多长是不清楚的,虽然说可以先求出有多少个结点,然后找倒数第k个,但是这种写法应该入不了出题人的法眼。可以定义两个指针,先让一个向前走k-1步,然后两个一起往后走,知道先走的到达最后一个结点,后走的就刚好走到了倒数第k个结点
-
第二题比较复杂,看博主写的图
-
如何快速找到中间的结点,同第一题,数节点个数当然满足不了题目快速的要求,还是定义两个指针,让一个指针一次走两个结点,另一个指针一次走一个结点,这样当走的快的指针到达最后一个结点或者为空了(结点个数可能是奇数或偶数),则走的慢的结点到达中间位置。
总结
感觉很多地方都用到了双指针法,这样确实增快了代码运行的速度,可以多感受感受,练习一下双指针法