剑指offer
经典题目
少年与云眠
朝气蓬勃,热气腾腾。
展开
-
(五)合并两个排序的链表
一、思路想起来了归并排序,就是两个链表中对应位置的结点进行比较,较小的插入到一个新的链表里1.如果A链表到达尾结点,B链表没有到达尾结点,那么直接将B链表剩余结点插入到新链表中2.如果B链表到达尾结点,A链表没有到达尾结点,那么直接将A链表剩余结点插入到新链表中3.释放原有A,B链表空间4.输出新链表二、代码三、测试四、总结...原创 2020-07-05 14:41:54 · 230 阅读 · 0 评论 -
(四)反转链表
目录一、思路二、代码三、测试四、总结一、思路反转链表,就是改变链表的结点指向,这里我们来分析以下需要的操作以及相应的注意点。1.反转链表需要将当前结点的指针域指向前驱结点,所以第一我们需要找到当前结点2.第二,需要找到前驱结点的地址3.这时,还有一个问题,那就是如果改变了当前结点的指向,那么我们的后继结点就会丢失,所以我们需要保存后继结点综上我们需要三个指针变量来表示这些关系二、代码#include<iostream>#include ".原创 2020-07-04 19:05:41 · 196 阅读 · 0 评论 -
(三)求链表中间结点
目录一、思路二、代码三、测试四、总结一、思路先上关键代码 LinkList front_Node = L->next; LinkList later_Node = L->next; while(front_Node->next != NULL) { if(front_Node->next->next !=NULL) front_Node = front_Node->next->next; el.原创 2020-07-04 17:47:18 · 605 阅读 · 0 评论 -
(二)求链表中倒数第k个节点
目录一、思路二、代码三、测试四、总结一、思路设置两个指针,一个快指针,一个慢指针。快指针初始值指向第一个结点,慢指针则指向空顾名思义,快指针先出发,等到快指针到达k-1位置时,令慢指针指向第一个结点,然后慢指针和快指针一起出发等到快指针到达尾结点,此时,慢指针正好到达倒数第K个结点。至于为什么是K-1,而不是K。我们看证明,证明如下:设链表长度为1,k= 1, y=k-1,那么y =0,也就是说快指针从第一个结点出发,令慢指针指向第一个结点,否则当...原创 2020-07-04 16:33:27 · 278 阅读 · 0 评论 -
(一)数组中奇数元素在前,偶数在后,并各自从小到大排序
目录一、规则二、代码三、测试一、规则使数组中所有奇数放到偶数前面,并且奇数部分从小到大排序,偶数部分从小到大排序输入规则: 第一行:输入一个整数,代表数组中的元素个数 第二行:输入数据输出: 所有奇数在前,偶数在后并且奇数部分从小到大排序,偶数部分从小到大排序样例: 输入: 5 1 2 3 4 5 输出: 1 3 5...原创 2020-07-04 12:15:11 · 3049 阅读 · 0 评论