一个小实验,将之前学习的Go相关的语法做个总结。
包括:

  1. Go语言接口特性
  2. Go语言封装特性
  3. Go语言 变量,指针,函数 语法
  4. GO语言 条件和循环语句 的语法
  5. 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语言通过单链表 实现队列相关推荐

  1. C语言的单链表实现队列

    队列是一种FIFO(先入先出)的数据结构 C++的STL std::queue q; 相关的队列操作,包括 q.empty() 判读队列是否为空 q.front() 返回队列的首元素 q.back() ...

  2. c语言用链表实现成绩管理系统,C语言基于单链表得学生成绩管理系统

    前言 传说中讲课通俗而不庸俗,说话风流而不下流的小编又来了哦,今天的主要内容是:C语言基于单链表得学生成绩管理系统.首先给年夜家总结下为什么你们学习C语言会觉得难,尤其是对单链表这块,主要原因得是因为 ...

  3. java语言实现单链表---不含头结点

    java语言实现单链表---不含头结点 一.相关概念 1.什么是线性表 2.什么是顺序表 3.什么是链表 4.单链表.双链表.循环单链表.循环双链表 5.头结点和首结点 6.常见的栈和队列与线性表的关 ...

  4. C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)

    http://blog.csdn.net/xiaofeige567/article/details/27484137 C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表) ...

  5. c语言实现可变单链表,c语言实现单链表

    c语言实现单链表 c语言实现单链表 定义 创建 销毁 清空 打印 获取长度 查询 删除第pos个结点 在第pos插入结点 定义 首先来看一看单链表的定义(看看百度的) 单链表是一种链式存取的数据结构, ...

  6. TypeScript算法专题 - blog1.基于TypeScript语言的单链表实现

    TypeScript算法专题 - 基于TypeScript语言的单链表实现 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目录:https://blog.csdn.n ...

  7. C语言基于单链表的词典软件

    C语言基于单链表的词典软件 实验1: 日期:2022-10-4 类型:设计型 题目:基于单链表的词典软件 内容: 利用单链表存储词典,可以实现从文件中加载数据.查询单词.添加词条.删除词条.将词典保存 ...

  8. c语言字符就地逆置,高手看看我的C语言代码单链表实现就地逆置

    高手看看我的C语言代码单链表实现就地逆置 单链表实现就地逆置#include #include struct type{ int date; struct type * next;}first;int ...

  9. c语言实现单链表的创建(完整版)

    使用c语言实现单链表是考研的重点.但是如何实现却是一个难点.下面是我写的一个简单的创建单链表的代码. #include<stdio.h> #include<stdlib.h> ...

最新文章

  1. 「镁客早报」人类首次在太空3D打印生物器官;中国学者研制出高性能低成本的电解“水制氢”催化剂...
  2. 捕获计算机屏幕++方法,如何在Windows 10计算机上录制屏幕以及如何捕获计算机的音频...
  3. 我的博客园第一个博客.
  4. 软件开发人员的“七重苦”(2)
  5. WEB请求处理六:浏览器HTTP协议漫谈
  6. linux qemu 运行win10,只用ISO镜像,在Linux系统上用Qemu虚拟机给另一块硬盘安装Windows 10...
  7. Encoding非常用编码转换
  8. 黑洞内部垂直向上发射光子,会怎样
  9. 福大软工 · 真 · 最终作业
  10. 河北省专科院校计算机专业排名,河北省高职院校全国排名+各院校王牌专业
  11. 蓝桥杯算法题-X星球居民小区的楼房全是一样的,并且按矩阵样式排列。
  12. awesome PHP之依赖注入容器pimple
  13. 书籍记录了我技术的成长历程
  14. checkpoint NGFW VM安装
  15. 《SiamMask:Fast Online Object Tracking and Segmentation:A Unifying Approach》论文笔记
  16. QQ号转换成16进制登陆
  17. 百度地图点聚合提高效率
  18. 量化交易之vnpy篇 - 几种同步发单模式(中金所股指锁仓模式、最小单边轧差操作模式、双边同步模式,净头寸模式)
  19. Hyperledger Fabric2.3 环境搭建及Fabric 测试网络使用
  20. 推荐系统开源软件列表汇总和点评

热门文章

  1. (转)MySQL联表查询
  2. javascript读取XML文档
  3. CMD——ping及用其检测网络故障
  4. 职称考试还要考计算机 英语,强烈建议取消所谓的英语职称和计算机考试
  5. 军团要塞2正版服务器,专用服务器配置 - Official TF2 Wiki | Official Team Fortress Wiki
  6. java oracle数据库高效分页查询_oracle高效分页查询总结
  7. macos下使用aria2_用Aria2代替Firefox内置的下载器
  8. linux mysql 无法识别,Linux下MySQL 5.7.23无法远程连接解决方案
  9. jumpserver 使用教程_jumpserver安装及使用教程
  10. 直接插入排序与希尔排序