![](https://img-blog.csdnimg.cn/20191231181004534.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
数结构的重要知识及实现代码
DuMarch
这个作者很懒,什么都没留下…
展开
-
排序算法——冒泡排序、选择排序、插入排序、希尔排序、归并排序
一、冒泡排序、冒泡排序的优化算法1.冒泡排序的概念冒泡排序是一种简单的排序算法,它重复的访问要排序的数列,一次进行两个元素的比较操作,如果不符合则元素之间进行交换。重复进行元素之间的比较操作,直到元素不再需要交换,继而该排序过程已经完成。2. 冒泡排序的算法描述a. 比较相邻的元素如果第一个比第二个大,就交换这两个元素;b. 每一趟最后的元素就是最大的元素;c. 重复以上步骤,直到排序...原创 2020-02-23 21:47:08 · 502 阅读 · 0 评论 -
单链表——两个有序链表合并为一个有序
(1)new一个新的链表,定义结点用来遍历两个待排序的链表;(2)两个待排序的链表,哪个头结点小,哪个作为新链表的头结点;(3)对两个链表的结点进行比较,让新链表的next指向较小的结点,更新新链表的尾巴,继续比较直至某个链表遍历结束。(4)遍历结束,如果哪个链表没遍历完,将剩下的几点串在新链表的后面,即当前尾巴的next指向为遍历完的链表。public class mergeLink {...原创 2020-02-23 21:22:27 · 1372 阅读 · 0 评论 -
链表——单向循环链表的实现
单向循环链表1.示意图:2.单向循环链表节点的结构private static class Entry<T> { private T value; private Entry<T> next; public Entry(T value) { this.value = value;...原创 2019-12-30 16:46:29 · 220 阅读 · 0 评论 -
单链表——假设存在两个单链表且相交,输出相交节点
(1)分别统计两个链表的长度;(2)长表先走差值步后,两个链表同时向后走;(3)判断是否有地址相同的节点,若有相同则为相交节点,没有则两个链表不相交。测试代码public static <T extends Comparable<T>>SingleLink.Entry<T> meetNode(SingleLink<T> link1,Singl...原创 2019-12-27 17:31:47 · 250 阅读 · 0 评论 -
单链表——链表逆置
方法一:头插法从链表依次拿尾结点,头插到链表。此方法基本不用,因为开销大,尾结点头插时需要new,开辟新的空间,而原来的尾结点需要回收内存。方法二:(1)三个引用变量 p q s;(2)改变方向,将q的next改为前驱节点;(3)重新更新链表的头结点与尾结点。public static <T extends Comparable<T>>void revers...原创 2019-12-27 17:20:47 · 311 阅读 · 0 评论 -
单链表——输出倒数第k个结点
方法一:利用size变量在结点的类里定义size参数,private int size; //记录链表的个数当对链表进行插入和删除时,分别要对size进行加减操作。因此,size记录的是链表的个数。public static <T extends Comparable<T>>SingleLink.Entry<T> getLastK(SingleLink&l...原创 2019-12-27 17:17:51 · 633 阅读 · 0 评论 -
单链表——判断链表是否有环,并输出环的入口结点
1.判断表是否有环快慢引用:1.定义两个结点 fast 与 slow,起始位置均为头部结点;2.fast一次走两个结点,slow一次走一个结点;3.当fast与low相遇,则为有环。//快慢引用public static <T extends Comparable<T>>boolean isLoop(SingleLink<T> link){ ...原创 2019-12-27 17:13:50 · 325 阅读 · 0 评论