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
相关文章:
最长公共子序列(LCS)问题 Longest Common Subsequence 与最长公告字串 longest common substr...
问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列。令给定的字符序列X“x0,x1,…,xm-1”,序列Y“…

逆战服务器在哪个文件夹,逆战的背景音乐文件夹放在哪?别说在服务器上面!...
满意答案Dim185629442017.01.11采纳率:58% 等级:13已帮助:7224人你右键逆战图标,有个打开文件位置,点开,找就可以了。。 追问: 如果我把我喜欢的音乐文件放进去,我喜欢的音乐会成…

ruby调用java代码
为什么80%的码农都做不了架构师?>>> ruby使用rjb调用java代码 require rjb#加载jar包 Rjb::load(classpath /home/deployer/DmCodec.jar, jvmargs[]) #new一个对象 DmCodec Rjb::import(com.zapya.DmCodec).new #调用实例方法 tmp DmCodec.encodeB6…

VMware虚拟机安装黑苹果MacOS Mojave系统详细教程
更多资源请百度搜索:前端资源网 欢迎关注我的博客:www.w3h5.com 最近遇到一个H5页面的 iPhone X 刘海兼容问题。查到一个 XCode 编辑器,可以模拟 iPhone X 环境运行。 然后发现,XCode 是专门为苹果的 MacOS 系统设计的一款开发工具…

LSM 优化系列(四) -- Rocksdb和Lethe 对Delete问题的优化
文章目录前言1. 问题背景2. 问题复现3. Rocksdb 的 Delete-Aware 优化3.1 可配置的 Delete-Aware调度3.2 Compaction 逻辑对 delete key的优化4. Lethe: A Tunable Delete-Aware LSM Engine . SIGMOD20前言 本文介绍过程中涉及到的源代码是基于rocksdb 6.4.6 版本的。 同时需…

CodeForces Round #287 Div.2
A. Amr and Music (贪心) 水题,没能秒切,略尴尬。 1 #include <cstdio>2 #include <algorithm>3 using namespace std;4 5 const int maxn 100 10;6 int a[maxn], r[maxn], ans[maxn];7 8 int cmp(int i, int j) { return a[i] < a[j]; …

什么叫安装文件索引服务器,搜出精彩 玩转Windows 2008系统心得
【IT168 专稿】不少朋友已经在不经意间与Windows Server 2008系统进行了亲密接触,在一段时间的接触之后,不知大家对该系统的文件搜索功能会有什么样的体会?其实,Windows Server 2008系统的文件搜索功能与以往相比有了很大进步&…

取eclipse console 打印字符串,判断日志是否有异常
2019独角兽企业重金招聘Python工程师标准>>> 1. 取得当前输入的console /*** 取得控制台的字符串的Docment* param processConsoleName 控制台名称,如在java application 中定义的名字为test ,则这个地方的输入为test即可* return null*/public stati…

PAT乙级1028
1028 人口普查 (20 分)某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是…

Go 分布式学习利器(12)-- Go语言的扩展和复用
Go语言无法天然支持继承,但是又想要实现面向对象的特性。 即父类对象 使用子类对象初始化,那么该父类对象调用的函数就是子类实现的函数 ,从而满足LSP(子类交换原则)。 案例一: Go语言 支持扩展父类的功能…

displaytag 导出
只使用displaytag的导出功能,表单展示用jqgrid实现。只需要后台修改一部分代码,其他的表单都能使用这个功能导出。导出四种文件格式:csv,excel,xml,pdf。 思路:在过滤器中处理,过滤器…

两个下拉框相关联ajax,触发第二个下拉框以显示基于从第一个下拉框中选择的值的值ajax...
我有两个引导程序下拉框。当我们点击另一个下拉菜单时,其中一个会根据用户选择的国家显示来自数据库的所有国家名称,另一个下拉菜单应该选择状态。 当我点击一个下拉菜单时,我做了一个ajax请求来显示国家名称。如何根据国家选择触发其他下拉菜…

使用apache服务器配置虚拟目录
安装好了apachephpmysql之后就像在自己电脑上安装wordpress玩玩,因为安装好之后根目录在D盘, 所以就想自己配置一个虚拟目录指向路径为D:\wordpress的wordpress 在httpd.conf中添加虚拟目录之后去访问localhost:88/myblog却出现了403错误,提示…

YARN的HA
拓展:线程与进程的区别 进程是由一个以上的的线程组成的 ps -ef 能出现的就是进程。 YARN HA hadoop001:zk rm(zkfc) nmhadoop002:zk rm(zkfc) nmhadoop003:zk nm ZKFC: 线程 只作为RM进程的一个线程而非独立的进程存在 RMStateSt…

一个复杂的存储过程
首先说明一下我这个存储过程的功能: 根据不同的查询条件组合进行查询数据,数据库中有项目信息表Project 有项目区域表ProjectArea 项目信息表Project和项目区域表的关联是通过ProjectArea和AreaID进行一对一关联,项目区域信息中的信息有所属关…

Go 分布式学习利器(13)-- Go语言的多态
文章目录1. 基本的多态实现2. 空接口与断言3. Go接口的最佳实践1. 基本的多态实现 我们知道C中实现多态是通过虚函数表 和 继承来 实现的。 类似如下代码: class Programmar{ public:virtual void write_hello_world() 0; }class GoProgrammar: public Programma…

服务器搭建虚拟win云服务,云服务器创建win10虚拟机
云服务器创建win10虚拟机 内容精选换一换弹性云服务器(Elastic Cloud Server,以下简称ECS)是由CPU、内存、镜像、云硬盘组成的一种可随时获取、弹性可扩展的计算服务器,同时它结合VPC、虚拟防火墙、数据多副本保存等能力,为您打造一个高效、可…

预编译 ASP.NET 网站以进行部署
预编译 ASP.NET 网站以进行部署和更新 打开一个命令窗口并定位到包含 .NET Framework 的文件夹。 .NET Framework 将安装在以下位置。 %windir%\Microsoft.NET\Framework\version运行 aspnet_compiler 命令,在命令提示符下键入以下内容,同时指定源&…

Go 分布式学习利器(14)-- Go语言的错误处理
1. Go 的错误机制 Go 语言的错误机制中与其他语言的主要差异如下: 没有异常机制error 类型实现了 error接口type error interface {Error() string }可以通过errors.New来快速创建错误实例errors.New(" num is not in range[0,100]")如下测试代码演示基…

30 个 php 操作 redis 常用方法代码例子
这篇文章主要介绍了 30 个 php 操作 redis 常用方法代码例子 , 本文其实不止 30 个方法 , 可以操作 string 类型、 list 类型和 set 类型的数据 , 需要的朋友可以参考下redis 的操作很多的,以前看到一个比较全的博客,但是现在找不到了。查个东西搜半天,下面整理一下php 处理 re…

电脑机时,电脑死机时,为啥会忍不住扇它一巴掌?
我们为什么会把自己的愤怒发泄在机器人呢?对于人们为何会打机器这个问题,国外媒体Hopes&Fears请教了很多专家,包括精神治疗医师、机械工程师、愤怒管理专家以及流行文化专家。有一场非常重要的会议就要召开了,你必须在五分钟时…

Android所有系统版本USB调试模式打开方法
参考 Android所有系统版本USB调试模式打开方法

docker(4)docker的网络,自定义网桥
Docker 的网络 运行 ifconfig 找到 docker0 : 虚拟网卡默认网卡名称为docker0 查看docker 的网桥: 我这里默认们没有进行安装 网桥管理设备:进行安装一下; yum install bridge-utils 命令:查看网桥crctl show: 注意上图中的i…

Go 分布式学习利器(15) -- Go 实现 深搜和广搜
强化语法,回顾算法。 通过Go语言实现 深度优先搜索 和 广度优先搜索,来查找社交网络中的三度好友关系(三度指的是一个节点到 其相邻节点 到 其相邻节点的节点 ,图递增三层好友关系)。 涉及到的Go语言语法:…

css背景属性
CSS背景: 属性 描述 background 简写属性,作用是将背景属性设置在一个声明中。 background-attachment 背景图像是否固定或者随着页面的其余部分滚动。 background-color 设置元素的背景颜色。 background-image 把图像设置为背景。 backgroun…

scp服务器复制命令跳过已有的文件夹,Linux scp命令复制文件到其它服务器上
例如:我想将59.64.30.101中的文件复制到59.64.28.78服务器。步骤如下:1.59.64.30.101终端执行如下命令#ssh-keygen -t rsa2.密钥生成后会在/root/.ssh/文件夹下产生两个文件id_rsa id_rsa.pub将id_rsa.pub文件复制到59.64.28.78执行如下命令scp id_rsa.p…

Win2008学习(二),群集的仲裁配置
当群集中的节点发生故障时,会有其它节点继续提供服务。不过,当节点之间的通信有问题或太多故障节点时,群集服务就会停止,可是群集可以容纳多少个节点故障呢?这要由仲裁配置(Quorum Configuration࿰…

前端token刷新并发处理
添加中间件,处理多个前端来的请求时,如果token需要刷新,先查看缓存,如果没有就在redis中做个标志位进行短期缓存,其他的请求发现缓存中的token,就不再刷新token了。这样就避免了重复刷新token的问题。 中间…

Rocksdb 的一些参数调优策略
文章目录写性能优化CF write buffer sizeDB write buffer size读性能优化block cachebloom filterCompression 压缩Compaction优化通用workload的配置本文在rocksdb 整个读写链路基础上给出一些简单的调优策略,主要是通过调整一些 参数来满足我们大多数workload的性…

Java项目:酒店管理系统(java+SSM+jsp+mysql+maven)
源码获取:博客首页 "资源" 里下载! 主要技术:java springmvc mybatis mysql tomcat js jauery jsp log4j等一些常见基本技术适用于Java毕设和学习使用 主要实现: 前台:登录、注册、酒店信息浏览、搜索酒店信息…