Go 分布式学习利器(11)-- Go语言通过单链表 实现队列
一个小实验,将之前学习的Go相关的语法做个总结。
包括:
- Go语言接口特性
- Go语言封装特性
- Go语言 变量,指针,函数 语法
- GO语言 条件和循环语句 的语法
- GO语言的测试程序
通过链表实现一个队列,元素在其中 拥有先进先出的特性。
简单实用。
package data_structureimport ("fmt""testing"
)/*队列的结构体,一个是数据,一个是指针
*/
type Queue struct{data intNext *Queue
}var mq *Queue // 用作队列的头节点
var endMq *Queue // 用作队列尾节点的上一个节点,方便插入/*通过可变参数 : node ... int 来直接构造队列
*/
func (q *Queue)Create(node ... int) bool {if len(node) == 0{return false}mq = new(Queue)mq.Next=nilendMq = mqfor _,n := range node{newQueueNode := new(Queue)newQueueNode.data = n/*链表的头插法,可以用来构造栈*///newQueueNode.Next = mq.Next//mq.Next = newQueueNode/*链表的尾插法,可以用来构造队列*/endMq.Next = newQueueNodeendMq = newQueueNode}endMq.Next = nilreturn true
}/*向队列中添加元素
*/
func (q *Queue)Push(node int) {newQueueNode := new(Queue)newQueueNode.data = nodeendMq.Next = newQueueNodeendMq = newQueueNodeendMq.Next = nil
}/*队列判空
*/
func (q *Queue)IsEmpty() bool {if mq.Next != nil {return false} else {return true}
}/*队列的大小
*/
func (q *Queue)Size() int {if mq.Next == nil{return 0}l := 1var newQueue *QueuenewQueue = mq.Nextfor newQueue.Next!= nil {l ++newQueue = newQueue.Next}return l
}/*从队列中弹出元素
*/
func (q *Queue)Pop() bool {if mq.Next != nil{mq = mq.Nextreturn true}return false
}/*打印当前队列中的元素
*/
func (q *Queue)Print() {n := 1var newHead *QueuenewHead = mq.Nextfor newHead.Next != nil {fmt.Printf("node%d: %d\n",n,newHead.data )n++newHead = newHead.Next}fmt.Printf("node%d: %d\n",n,newHead.data )
}/*测试代码
*/
func TestQueue(t *testing.T) {var Q *QueueQ = new(Queue)t.Log("Create queue : 1,2,3")Q.Create(1,2,3)Q.Print()Q.Push(2)t.Log("Push 2")Q.Print()t.Log("Size ", Q.Size())t.Log("Pop ",Q.Pop())Q.Print()t.Log("Size ", Q.Size())
}
输出如下:
=== RUN TestQueuequeue_test.go:104: Create queue : 1,2,3
node1: 1
node2: 2
node3: 3queue_test.go:109: Push 2
node1: 1
node2: 2
node3: 3
node4: 2queue_test.go:111: Size 4queue_test.go:113: Pop true
node1: 2
node2: 3
node3: 2queue_test.go:116: Size 3
--- PASS: TestQueue (0.00s)
PASS
Go 分布式学习利器(11)-- Go语言通过单链表 实现队列相关推荐
- C语言的单链表实现队列
队列是一种FIFO(先入先出)的数据结构 C++的STL std::queue q; 相关的队列操作,包括 q.empty() 判读队列是否为空 q.front() 返回队列的首元素 q.back() ...
- c语言用链表实现成绩管理系统,C语言基于单链表得学生成绩管理系统
前言 传说中讲课通俗而不庸俗,说话风流而不下流的小编又来了哦,今天的主要内容是:C语言基于单链表得学生成绩管理系统.首先给年夜家总结下为什么你们学习C语言会觉得难,尤其是对单链表这块,主要原因得是因为 ...
- java语言实现单链表---不含头结点
java语言实现单链表---不含头结点 一.相关概念 1.什么是线性表 2.什么是顺序表 3.什么是链表 4.单链表.双链表.循环单链表.循环双链表 5.头结点和首结点 6.常见的栈和队列与线性表的关 ...
- C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)
http://blog.csdn.net/xiaofeige567/article/details/27484137 C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表) ...
- c语言实现可变单链表,c语言实现单链表
c语言实现单链表 c语言实现单链表 定义 创建 销毁 清空 打印 获取长度 查询 删除第pos个结点 在第pos插入结点 定义 首先来看一看单链表的定义(看看百度的) 单链表是一种链式存取的数据结构, ...
- TypeScript算法专题 - blog1.基于TypeScript语言的单链表实现
TypeScript算法专题 - 基于TypeScript语言的单链表实现 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目录:https://blog.csdn.n ...
- C语言基于单链表的词典软件
C语言基于单链表的词典软件 实验1: 日期:2022-10-4 类型:设计型 题目:基于单链表的词典软件 内容: 利用单链表存储词典,可以实现从文件中加载数据.查询单词.添加词条.删除词条.将词典保存 ...
- c语言字符就地逆置,高手看看我的C语言代码单链表实现就地逆置
高手看看我的C语言代码单链表实现就地逆置 单链表实现就地逆置#include #include struct type{ int date; struct type * next;}first;int ...
- c语言实现单链表的创建(完整版)
使用c语言实现单链表是考研的重点.但是如何实现却是一个难点.下面是我写的一个简单的创建单链表的代码. #include<stdio.h> #include<stdlib.h> ...
最新文章
- 「镁客早报」人类首次在太空3D打印生物器官;中国学者研制出高性能低成本的电解“水制氢”催化剂...
- 捕获计算机屏幕++方法,如何在Windows 10计算机上录制屏幕以及如何捕获计算机的音频...
- 我的博客园第一个博客.
- 软件开发人员的“七重苦”(2)
- WEB请求处理六:浏览器HTTP协议漫谈
- linux qemu 运行win10,只用ISO镜像,在Linux系统上用Qemu虚拟机给另一块硬盘安装Windows 10...
- Encoding非常用编码转换
- 黑洞内部垂直向上发射光子,会怎样
- 福大软工 · 真 · 最终作业
- 河北省专科院校计算机专业排名,河北省高职院校全国排名+各院校王牌专业
- 蓝桥杯算法题-X星球居民小区的楼房全是一样的,并且按矩阵样式排列。
- awesome PHP之依赖注入容器pimple
- 书籍记录了我技术的成长历程
- checkpoint NGFW VM安装
- 《SiamMask:Fast Online Object Tracking and Segmentation:A Unifying Approach》论文笔记
- QQ号转换成16进制登陆
- 百度地图点聚合提高效率
- 量化交易之vnpy篇 - 几种同步发单模式(中金所股指锁仓模式、最小单边轧差操作模式、双边同步模式,净头寸模式)
- Hyperledger Fabric2.3 环境搭建及Fabric 测试网络使用
- 推荐系统开源软件列表汇总和点评
热门文章
- (转)MySQL联表查询
- javascript读取XML文档
- CMD——ping及用其检测网络故障
- 职称考试还要考计算机 英语,强烈建议取消所谓的英语职称和计算机考试
- 军团要塞2正版服务器,专用服务器配置 - Official TF2 Wiki | Official Team Fortress Wiki
- java oracle数据库高效分页查询_oracle高效分页查询总结
- macos下使用aria2_用Aria2代替Firefox内置的下载器
- linux mysql 无法识别,Linux下MySQL 5.7.23无法远程连接解决方案
- jumpserver 使用教程_jumpserver安装及使用教程
- 直接插入排序与希尔排序