Go语言(Golang)约瑟夫游戏(Joseph)

Go语言(Golang)约瑟夫游戏(Joseph),第1张

概述package mainimport ( "fmt")//假设是一群小孩在玩这个游戏//创建一个小孩的结构体type BoyNode struct { No int //给每个小孩一个唯一的身份编号 next *BoyNode //指向下一个小孩}//假设有number个小孩在玩游戏func AddBoyNode(number int) *BoyNode { hea
package mainimport (	"fmt")//假设是一群小孩在玩这个游戏//创建一个小孩的结构体type BoyNode struct {	No int //给每个小孩一个唯一的身份编号	next *BoyNode //指向下一个小孩}//假设有number个小孩在玩游戏func AddBoyNode(number int)  *BoyNode {	head := &BoyNode {} //先创建一个头节点	temp := &BoyNode {} //创建一个辅助节点	for i := 1; i<= number; i++ {		boy := &BoyNode {			No : i,}		if i == 1 {			head = boy			temp = boy			temp.next = head		} else {			temp.next = boy			temp.next.next = head		}		temp = temp.next	}	return head}//开始游戏func Play(head *BoyNode,a,b int) *BoyNode {	temp := head   //辅助节点指向头节点head	helper := head	//辅助节点指向链表最后的节点	//判断如果没有小孩无法游戏	if temp.next == nil {		fmt.Println("没有小孩,无法进行游戏!")		return head	}	//小孩只剩一个的时候退出游戏	if temp.next == head {		fmt.Println("只有一个小孩了,游戏结束!最后一个小孩为:")		return head	}	//将helper指向最后一个小孩	for {		if helper.next == head {			break		}		helper = helper.next	}	//循环找到从第a个小孩开始游戏	for {		if temp.No == a {			break		}		temp = temp.next		helper = helper.next	}	//数到b时出列的小孩	for i := 1; i < b; i++ {		temp = temp.next		helper = helper.next	}	//如果该小孩是第一个小孩,则将头节点指向下一个小孩	if temp == head {		head = head.next	}	helper.next = temp.next	fmt.Println()	fmt.Printf("小男孩:%d出列!",temp.No)	fmt.Println()	ListBoyNode(head)	//下一次游戏从第a个小孩开始	a = temp.next.No	return Play(head,b)}//输出显示链表func ListBoyNode(head *BoyNode) {	temp := head	for {		fmt.Printf("小男孩:%d ==>",temp.No)		temp = temp.next		if temp == head {			break		}	}}func main() {	fmt.Println("请输入有多少个小孩玩游戏:")	var number int	fmt.Scan(&number)	head := AddBoyNode(number)	ListBoyNode(head)	fmt.Println("请输入从第几个小孩开始游戏:")	var a int 	fmt.Scan(&a)	fmt.Println("请输入数几的小男孩出列:")	var b int 	fmt.Scan(&b)	head = Play(head,b)	ListBoyNode(head)}
总结

以上是内存溢出为你收集整理的Go语言(Golang)约瑟夫游戏(Joseph)全部内容,希望文章能够帮你解决Go语言(Golang)约瑟夫游戏(Joseph)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1269076.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存