josephu.go

package link

import (
"fmt"
) type Kid struct {
ID int
next *Kid
} func AddKid(num int) *Kid {
first := &Kid{}
cur := &Kid{} if num < {
fmt.Println("不合法")
return first
}
for i := ; i <= num; i++ {
kid := &Kid{
ID: ,
}
if i == {
first = kid
cur = kid
cur.next = first
} else {
tmpKid := &Kid{
ID: i,
}
cur.next = tmpKid
cur = tmpKid
cur.next = first }
}
return first
} func ShowKid(first *Kid) {
if first.next == nil {
fmt.Println("链表已空")
}
cur := first
for {
fmt.Printf("小孩编号:%d\n", cur.ID)
if cur.next == first {
break
}
cur = cur.next
}
}
func Play(first *Kid, start int, count int) { if first.next == nil {
fmt.Println("空链表")
return
}
tail := first
for {
//到最后一个节点了
if tail.next == first {
break
}
tail = tail.next
}
//删除就以frst为主,让first移动到要删除的位置
for i := ; i <= start-; i++ {
first = first.next
tail = tail.next
}
//开始数,然后进行删除
for {
for i := ; i <= count-; i++ {
first = first.next
tail = tail.next
}
fmt.Printf("编号为:%d 的出列\n", first.ID)
first = first.next
tail.next = first
if tail == first {
break
}
}
fmt.Printf("编号为:%d 的出列\n", first.ID)
}

main.go

package main

import "go_code/data_structure/link"

func main() {

    first := link.AddKid()
link.ShowKid(first)
link.Play(first, , )
}

运行结果:

f:\goproject\src\go_code\data_structure>go run main.go
小孩编号:1
小孩编号:2
小孩编号:3
小孩编号:4
小孩编号:5
小孩编号:6
小孩编号:7
小孩编号:8
小孩编号:9
小孩编号:10
小孩编号:11
小孩编号:12
小孩编号:13
小孩编号:14
小孩编号:15
小孩编号:16
小孩编号:17
小孩编号:18
小孩编号:19
小孩编号:20
编号为:3 的出列
编号为:6 的出列
编号为:9 的出列
编号为:12 的出列
编号为:15 的出列
编号为:18 的出列
编号为:1 的出列
编号为:5 的出列
编号为:10 的出列
编号为:14 的出列
编号为:19 的出列
编号为:4 的出列
编号为:11 的出列
编号为:17 的出列
编号为:7 的出列
编号为:16 的出列
编号为:8 的出列
编号为:2 的出列
编号为:13 的出列
编号为:20 的出列

golang数据结构之用循环链表解决约瑟夫环问题的更多相关文章

  1. C++循环链表解决约瑟夫环问题

    约瑟夫环问题可以简单的使用数组的方式实现,但是现在我使用循环链表的方法来实现,因为上午看到一道面试题规定使用循环链表解决约瑟夫环问题. 什么是约瑟夫环? “约瑟夫环是一个数学的应用问题:已知n个人(以 ...

  2. javascript中使用循环链表实现约瑟夫环问题

    1.问题 传说在公元1 世纪的犹太战争中,犹太历史学家弗拉维奥·约瑟夫斯和他的40 个同胞被罗马士兵包围.犹太士兵决定宁可自杀也不做俘虏,于是商量出了一个自杀方案.他们围成一个圈,从一个人开始,数到第 ...

  3. 循环列表的Java实现,解决约瑟夫环问题

    import java.util.Scanner; /** * 循环列表的Java实现,解决约瑟夫环问题 * * @author LIU * */ public class LinkedList { ...

  4. php解决约瑟夫环的问题

    php里面解决约瑟夫环还是比较方面的,但是下面的方法太费空间 <?php class SelectKing{ private $m;//幅度 private $n;//总数 public fun ...

  5. PHP解决约瑟夫环问题

    PHP解决约瑟夫环问题 一.总结 二.PHP解决约瑟夫环问题 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到 ...

  6. 单向环形链表解决约瑟夫环(Josephus)问题

    一.约瑟夫环问题 Josephu 问题为:设编号为1,2,- n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那 ...

  7. C语言单向循环链表解决约瑟夫问题

    据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,4 ...

  8. Java循环链表实现约瑟夫环(搬运)

    public class Josephus { static class Node{ int val; Node next; Node(int v){ val=v; } }//成员类,代表节点,类似于 ...

  9. 10行Python代码解决约瑟夫环(模拟)

    http://blog.csdn.net/dengyaolongacmblog/article/details/39208675 #!/usr/bin/env python # coding: utf ...

随机推荐

  1. Assets.xcassets:-1: Failed to find a suitable device for the type IBSimDeviceTypeiPad2x

    Assets.xcassets:-1: Failed to find a suitable device for the type IBSimDeviceTypeiPad2x 不知道assets发生了 ...

  2. Andriod安卓下开发UHF读写器

    随着在Andriod设备上使用UHF读写器变得越来越广泛,友我科技独立研发了UHF读写器的android开发包,使用此开发包,工程师只需在工程中导入jar包,使用java语言就可以轻松的开发出Andr ...

  3. 用PYTHON首选的GUI库WXPYTHON做程序界面

    大家好,我是A8U神经网络,今天又要跟大家分享一下wxWidgets开发神经网络程序界面的一些经验,希望对开发有兴趣的朋友有所帮助.跨平台的GUI工具库以GTK +,Qt和wxWidgets闻名. G ...

  4. 初级模拟电路:3-11 BJT实现电流源

    回到目录 1. 恒流源 (1)简易恒流源 用BJT晶体管可以构造一个简易的恒流源,实现电路如下: 图3-11.01 前面我们在射极放大电路的分压偏置时讲过,分压偏置具有非常好的稳定性,几乎不受晶体管的 ...

  5. Redis安装部署以及简单应用

    Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(list ...

  6. 13. java String类

    一.字符串类 /* java.lang.String类代表字符串 程序中所有的双引号字符串,都是String类的对象.就算没有new 字符串中的内容,永不变:不可变 字符串效果上相当于是char[]字 ...

  7. 1+x 证书 Web 前端开发中级理论考试(试卷 8 )含答案

    1+x 证书 Web 前端开发中级理论考试(试卷 8 ) 官方QQ群 转载请注明来源:妙笔生花个人博客http://blog.zh66.club/index.php/archives/438/ 一.单 ...

  8. Java描述设计模式(09):装饰模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 孙悟空有七十二般变化,他的每一种变化都给他带来一种附加的本领.他变成鱼儿时,就可以到水里游泳:他变成鸟儿时,就可以 ...

  9. 图数据库 Nebula Graph 的安装部署

    Nebula Graph:一个开源的分布式图数据库.作为唯一能够存储万亿个带属性的节点和边的在线图数据库,Nebula Graph 不仅能够在高并发场景下满足毫秒级的低时延查询要求,还能够实现服务高可 ...

  10. 在nodejs中怎么使用redis缓存组件

    redis量个强大的缓存组件,可以部署在windows和linux环境之上,它有五大存储结构,其中有一种为列表list,它可以实现quene和stack的功能,即队列和堆栈的功能. 当然使用先安装py ...