golang資料結構之用迴圈鍊錶解決約瑟夫環問題

2022-06-11 19:54:11 字數 1708 閱讀 1486

josephu.go

package link

import (

"fmt")

type kid

struct

func addkid(num

int) *kid

cur := &kid{}

if num < 1

for i := 1; i <= num; i++

if i == 1

else

cur.next =tmpkid

cur =tmpkid

cur.next =first}}

return

first

}func showkid(first *kid)

cur :=first

for cur =cur.next

}}func play(first *kid, start int, count int

) tail :=first

for tail =tail.next

}//刪除就以frst為主,讓first移動到要刪除的位置

for i := 1; i <= start-1; i++

//開始數,然後進行刪除

for fmt.printf(

"編號為:%d 的出列\n

", first.id)

first =first.next

tail.next =first

if tail ==first

}fmt.printf(

"編號為:%d 的出列\n

", first.id)

}

main.go

package main

import

"go_code/data_structure/link

"func main()

執行結果:

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 的出列

資料結構 迴圈鍊錶

近期我在學習資料結構,於是我自己整理了單鏈表 迴圈單鏈表 雙向鍊錶 雙向迴圈鍊錶的相關 以鞏固這段時間的學習,也希望能夠幫助初學者,希望大家在閱讀以下 時發現問題糾正於我,一起 cyclinklist.h ifndef cyclinklist h define cyclinklist h inclu...

資料結構 迴圈鍊錶

迴圈鍊錶的結點 typedef struct circularnodecircularnode 迴圈鍊錶結構 typedef struct circularlinklistcircularlinklist 在迴圈鍊錶的指定位置插入元素 void insertcircularlinklist circ...

資料結構 迴圈鍊錶

start reading 在知道熟悉單鏈表的操作後,我們知道鍊錶有乙個資料域存放具體的資料,有乙個next域存放後繼的位址,如果我們將尾結點的next域指向之前的任意乙個節點,那麼就形成了乙個環。下面我們就來說說迴圈鍊錶 如圖就是乙個迴圈鍊錶 在對迴圈鍊錶進行操作時要注意尾結點的後繼不是null,...