数据结构
CrazyJavaPerson
这个作者很懒,什么都没留下…
展开
-
golang排序算法--基数排序
原理基数排序的思想其实挺有意思,举个栗子来说,有如下数组:第一趟:我们首先对这个数组按照其个位数进行分组,结果如下:然后将分组后的数据按照索引的大小取出,得到新的数组如下:第一趟排序后完成的工作为将数组按照个位数由小到大的顺序进行了排序第二趟:对第一趟的结果按照十位数进行分组,结果如下:然后将分组后的数组按照索引的大小分别取出,得到新的数组如下:第二...原创 2019-10-22 18:53:27 · 777 阅读 · 0 评论 -
【golang数据结构和算法】--单链表合并、删除、查找
两个有序的链表合并 删除链表倒数第n个结点 求链表的中间结点// 两个有序的链表合并// 输入:1->2->4, 1->3->4// 输出:1->1->2->3->4->4func (s *SingleLL)MergeTwoList(list1, list2 *Node) (res *Node) { if list1 == n...原创 2019-10-21 15:04:02 · 188 阅读 · 0 评论 -
【golang数据结构和算法】--单链表检测存在环和求环长
思路是:我们先从简单的同起点开始计算然后推广到非同起点的情况。同起点第i次迭代时,p指向元素i mod n,q指向2i mod n。因此当i==2i(mod n)时,p与q相遇。而i=2i(mod n)=> (2i - i) mod n = 0=> i mod n = 0=> 当i=n时,p与q相遇。非同起点两个起点不同,速度不同的指针p,q满足什么关系时可以相遇?...原创 2019-10-18 11:22:05 · 192 阅读 · 0 评论 -
【golang数据结构和算法】--单链表反转
单链表反转实现package modulestype SingleLL struct { list *Node}func (s *SingleLL)InitSingleLinkedList(data []int) { var tempNode *Node for i := 0; i < len(data); i++ { if i == 0 { tempNo...原创 2019-10-18 10:19:12 · 191 阅读 · 0 评论 -
【golang数据结构和算法】--顺序队列和链式队列
队列跟栈一样, 也是一种操作受限的线性表数据结构,并且具有先进先出的特性。用数组实现的栈叫作顺序栈, 用链表实现的栈叫作链式栈;同样,用数组实现的队列叫作顺序队列,用链表实现的队列叫作链式队列。顺序队列package modulestype ArrayQueue struct { items []string // 队列 n int // 队内元素数...原创 2019-10-17 14:02:45 · 256 阅读 · 0 评论