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. LVS的工作模式介绍和NAT模式&DR模式实验步骤

    一:LVS介绍 二.LVS的NAT和DR模式的实验及配置步骤 一.LVS的简单介绍 linux virtual server 简单来讲lvs是一段内核代码 类似于netfilter本身是一框架但不提供 ...

  2. openldap数据备份还原

    数据备份[root@Server ~]# slapcat -n 2 -l /root/ldapbackup_ilanni.ldif脚本 ----- #!/bin/bash # 备份脚本 PATH=&q ...

  3. 关于thymeleaf中th:if的使用

    运用于判断表达式中时,关系判断使用 gt / ge / eq / lt / le / ne (即:使用缩写) gt: great than(大于)> ge: great equal(大于等于)& ...

  4. MongoDB学习笔记(七、MongoDB总结)

    1.为什么要NoSQL:nosql能解决sql中那些解决不了的问题 NoSQL是什么:Not Only SQL,本质上还是数据库,但它不会遵循传统数据库的规则(如:SQL标准.ACID属性[事务].表 ...

  5. spring data JPA entityManager查询 并将查询到的值转为实体对象

    spring data JPA entityManager查询 并将查询到的值转为实体对象 . https://blog.csdn.net/qq_34791233/article/details/81 ...

  6. MySql索引背后的数据结构及算法

    本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree ...

  7. Mysql的旧版本下载地址

    直接进入:http://downloads.mysql.com/archives/community/

  8. Nginx图片防盗链配置

    如果我们自己网站内的图片资源被其它网站所盗用,这会增加自己网站的带宽资源,增加很多额外的消耗,而且会对我们系统的稳定性有影响,为了防止自己网站上的图片资源被其它网站所盗用,我们需要给自己的服务器配置防 ...

  9. (转)理解滑动平均(exponential moving average)

    转自:理解滑动平均(exponential moving average) 1. 用滑动平均估计局部均值 滑动平均(exponential moving average),或者叫做指数加权平均(exp ...

  10. 剑指offer笔记面试题10----斐波那契数列

    题目:求斐波那契数列的第n项.写一个函数,输入n,求斐波那契数列的第n项.斐波那契数列的定义如下:f(0) = 0, f(1) = 1,f(n) = f(n - 1) + f(n - 2). 测试用例 ...