数据结构
磨镜台
牢骚太盛防肠断,风物长宜放眼量。
展开
-
golang实现切片
切片//定义切片类型type Slice struct { // void * C语言中的万能指针,没有具体数据类型,不能进行运算 Data unsafe.Pointer //go语言中万能指针类型。操作需要转换成int Len int //数据元素个数 Cap int //可扩展的有效容量}unsafe.Pointer参与运算操作需要转换,p := uintpt...原创 2019-07-16 19:57:03 · 535 阅读 · 0 评论 -
数据结构简介
概念数据结构是计算机存储、组织数据的方式。数据结构是算法的基础。算法是特定问题求解步骤的描述算法的分类分治(分布治理):有明确的目标,明确的执行方式。一般采用 拆分、解决小问题、合并的流程来加以实现。最短路径:有明确的目标,需要找寻有效的执行方式。游戏开发使用较多。贪婪(贪心):没有明确的目标,没有有效的执行方式。需要现场分析,获取目标,找寻执行方式。人工智能领域。算法的特性...原创 2019-07-16 20:09:38 · 151 阅读 · 0 评论 -
线性表-单向链表
线性表动态数组(切片)、链表、栈、队列都属于线性结构。线性表是零个或者多个数据元素的有限序列,数据元素之间是有顺序的,数据元素个数是有限的,数据元素的类型是相同的。头节点只有一个后继节点,尾节点只有一个前继节点,中间节点既有前继节点又有后续节点。线性表的抽象数据类型定义ADT线性表(List)Data线性表的数据对象集合为{ a1, a2, ……, an },每个元素的类型均为Dat...原创 2019-07-16 20:10:15 · 145 阅读 · 0 评论 -
链式栈
链式栈先进后出,FILO(first in last out)入栈出栈都属于增删操作操作方法创建链式栈打印链式栈压栈出栈go实现创建type StackNode struct { Data interface{} Next *StackNode}func CreateStack(Data ...interface{}) *StackNode { if Data =...原创 2019-07-19 19:47:23 · 111 阅读 · 0 评论 -
二叉树
二叉树根:根结点叶子:终端结点,没有后继双亲:直接前驱结点孩子:直接后继结点结点的度:有几个直接后继结点就是几度树的度:所有结点度中的最大值树的深度:所有结点中最大的层数二叉树性质满二叉树每层都充满了结点完全二叉树除最后一层外,每一层节点数都达到最大值,在最后一层只缺少右边的若干结点完全二叉树的顺序存储左子右兄表示法多叉树转换成一个二叉树将同层所有兄弟连成一条线...原创 2019-07-19 19:58:30 · 173 阅读 · 0 评论 -
双向链表
双向链表结点数据结构type LinkNode struct { Data interface{} Prev *LinkNode Next *LinkNode}双向链表方法:1. 创建链表 Create(数据)2. 打印链表 Print()3. 获取结点个数 Length() int4. 插入结点 Insert(index, 数据)5. 删除结点 De...原创 2019-07-17 20:00:46 · 143 阅读 · 0 评论 -
循环链表
环形链表概念是单向链表的特例。将单向链表的尾结点,指向第一个数据结点(不是头结点)循环链表数据结点type LinkNode struct { Data interface{} Next *LinkNode}循环链表的方法1. 创建链表 Create(数据)2. 打印链表 Print()3. 获取结点个数 Length() int4. 插入结点 Insert(...原创 2019-07-17 20:03:33 · 125 阅读 · 0 评论 -
二分查找go实现
二分查找二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。O(log2n)go实现这里是升序情况递归实现1. 与中间数比较2. 小于则递归中间数左半数组3. 大于于则递归中间数右半数组 加上 length/2 + 14. 返回下标,-1表示没找到//递归法func bin...原创 2019-07-21 20:56:14 · 360 阅读 · 0 评论 -
反转链表
反转链表初始化,前节点为空,当前节点为第一个节点,下一个节点根据当前节点是否为空来进行赋值。改变当前节点的下一个节点的指向为前一个节点。前中后节点依次移动。//链表节点type ListNode struct { next *ListNode data int}/*反转链表://初始化pre为空cur为第一个节点for cur不为空 { next为cur.ne...原创 2019-08-16 15:09:18 · 269 阅读 · 0 评论