![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
习题库
小狮子辛巴
这个作者很懒,什么都没留下…
展开
-
链表---判断两链表是否相交
判断两个链表是否相交?? 思路:如果两个链表相交,则它们在交点之后节点必然是公共的,所以遍历完两个链表,判断它们最后的节点是否相同就能判断两个链表是否相交。如图 typedef struct ListNode { int data; node* next; }ListNode; bool list_intersect(ListNode* list...原创 2018-08-12 17:17:12 · 213 阅读 · 0 评论 -
链表---链表的倒数第k个节点
找链表的倒数第k个节点??? 思路:遍历一遍链表,得到链表的长度len, 再用长度len减掉k就是需要走多少步就能倒数第k个节点的位置了。 如图有一个链表,有效数据长度 len为5;假设现在要找倒数第三个节点。即k为3; 如果当前指针指向头节点,则需要走len-k+1步(值为3),才能到倒数第k个节点 如果指向的是第一个有效数据节点,则需要走len-k(值为2)步。 node...原创 2018-08-13 17:14:23 · 163 阅读 · 0 评论 -
Myatoi函数
题目描述:实现Myatoi函数,将字符串转成数字,比如"123"->123,"12a3"->12。遇到第一个非数字字符转换结束。可以处理前面的空格字符和负号。 int Myatoi(char *s) { if(s==NULL) { return 0; } int tmp=0;//记录到时返回的值 int tag=1;//记录正...原创 2018-09-11 17:37:05 · 739 阅读 · 0 评论 -
str_reverse函数
题目描述:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 句子中单词以空格符隔开。 例如:I am a student => student a am I 思路:先将整个句子逆置,一下,再将每个单词逆置。 过程:I am a student => sneduts a ma I 。再将每个单词逆置:student a am I void s...原创 2018-09-11 17:46:39 · 1160 阅读 · 0 评论 -
链表---单链表的逆置
关于单链表的题目是面试过程中比较爱出的算法题,因为代码不会很多,大概都能在十分钟之内给出答案,所以会受到面试官的青睐,如果再增加难度,就是关于二叉树的操作了。所以对链表和二叉树的的经典题是我们应该掌握的。 本章对于单链表的逆置进行详细分析。 思路:遍历单链表,利用头插的方式将遍历到的节点插入但链表中 指针:p=NULL; 指针:q=NULL; 每遍历head链表上的节点,将节点...原创 2018-09-09 11:14:16 · 565 阅读 · 0 评论 -
链表---删除链表中重复节点
题目:删除单链表中重复的节点,如 1 -> 2 -> 2 ->2 -> 3 -> 5,删除后变成 1-> 2 -> 3 -> 5 思路:定义两个指针 p1,p2,比较两个节点的元素值,相同就删除。 void delete_same_node(P plist1) { if(NULL == plist1 || NULL==plist1->...原创 2018-09-09 11:41:59 · 230 阅读 · 0 评论 -
链表---判断单链表是否有环
题目:判断一个单链表是否有环 思路:定义两个指针,一个指针每一次走一步,一个指针每一次走两步。如果两个指针相遇了,就说明有环。否则如果当慢指针或快指针等于NULL了,说明链表没有环。 空间复杂度O(1),时间复杂度O(n)。 bool hava_ring_list(P plist) { node * p1=plist;//快指针 node * p2=plist;//慢指针 while...原创 2018-09-09 11:55:30 · 154 阅读 · 0 评论