随笔分类 -  go与数据结构

摘要:本篇文章我们用Go封装一个利用gopark和goready实现协程睡眠唤醒的库。文章参考自:https://github.com/brewlin/net-protocol 1.gopark和goready的声明 //go:linkname gopark runtime.gopark func gop 阅读全文
posted @ 2023-03-03 16:33 qxcheng 阅读(315) 评论(0) 推荐(1) 编辑
摘要:本篇文章我们用Go实现一个自定义事件注册并等待唤醒的机制,其中涉及到的链表操作可以参考上一篇文章。文章参考自:https://github.com/brewlin/net-protocol 1.自定义唤醒事件 type EventMask uint16 const ( EventIn EventMa 阅读全文
posted @ 2023-03-01 12:29 qxcheng 阅读(68) 评论(0) 推荐(1) 编辑
摘要:本篇文章我们用Go封装一个介入式的双向链表,目的是将链表的实现和具体元素解耦。文章参考自:https://github.com/brewlin/net-protocol 1.元素的接口 type Element interface { Next() Element Prev() Element Se 阅读全文
posted @ 2023-02-27 13:36 qxcheng 阅读(19) 评论(0) 推荐(0) 编辑
摘要:本篇文章我们用Go封装一个无等待锁库。文章参考自:https://github.com/brewlin/net-protocol 1.锁的封装 type Mutex struct { v int32 ch chan struct{} } 2.锁的初始化 func (m *Mutex) Init() 阅读全文
posted @ 2023-02-26 23:09 qxcheng 阅读(43) 评论(0) 推荐(0) 编辑
摘要:本篇文章我们用go来实现红黑树,部分参考资料如下: https://www.cnblogs.com/skywang12345/p/3245399.html#!comments https://blog.csdn.net/v_JULY_v/article/details/6105630 https:/ 阅读全文
posted @ 2021-11-03 19:44 qxcheng 阅读(231) 评论(0) 推荐(0) 编辑
摘要:本篇,我们用go简单的实现平衡二叉查找树。具体原理参考大佬博客即可:AVL树(一)之 图文解析 和 C语言的实现 1.节点定义 type AVLNode struct{ data int height int left, right *AVLNode } 2.树的遍历 // 前序遍历 func Pr 阅读全文
posted @ 2021-10-29 15:41 qxcheng 阅读(91) 评论(0) 推荐(0) 编辑
摘要:本篇,我们用go简单的实现二叉查找树。 1.节点定义 type BSNode struct{ data int left, right, parent *BSNode } 2.前序遍历 func (p *BSNode) PreTraverse() error{ if p.data == 0 { re 阅读全文
posted @ 2021-09-28 15:05 qxcheng 阅读(51) 评论(0) 推荐(0) 编辑
摘要:本篇,我们用go简单的实现单链表这种数据结构。 1.节点定义 type Node struct{ data int next *Node } 2.节点的添加 // 尾插法插入节点 func (p *Node) Append(data int) { for p.next != nil { p = p. 阅读全文
posted @ 2021-08-16 16:06 qxcheng 阅读(304) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示