回 帖 发 新 帖 刷新版面

主题:【求助】围圈报数出局问题(链表方面)

program experi

    implicit none

    type count
        integer ::x
        type(count),pointer::next
    end type count

    type (count), pointer :: root,current,jump
    integer , parameter :: num=30
    integer , parameter :: out=8
    integer :: i

    allocate(root)
    root%x=1
    allocate(root%next)
    root=>root%next

    allocate(current)
    do i=1,num-1
        current%x=i
        allocate(current%next)
        current=>current%next
    end do
    current%x=num
    current%next=>root
    

    allocate(jump)
    do
        do i=1,out-1
            jump=>jump%next
            jump%next=>current%next
        end do 
        jump=>current%next
        current=>jump%next
        print *,jump%x
        
        if(jump%x==current%x)exit
        
    
    end do 

    end program experi
这是一道三十个人围成一圈报数报到8就出局,直到最后只剩一个人,要求出局的顺序
上面的代码是我编的,但是一直有错,调试不出来
同学有这么编的(如下),但是我看着总觉得有些地方不完善(不过这个可以执行出来),求高人指点这两个程序应该怎么改~~或者第二个是已经没问题的?
program count
implicit none

type people
integer :: a
type(people) , pointer :: next
end type people

integer , parameter :: peoplenum = 30
integer , parameter :: cutout = 8
integer :: i
type(people) , pointer :: root, current
type(people) , pointer :: jump

allocate(root)
current => root

do i = 1, peoplenum - 1
    current%a = i
    allocate(current%next)
    current => current%next
end do

current%a = peoplenum
current%next => root

current => root



do
    do i = 1, cutout - 2
        current => current%next
    end do
    [color=FF0000]jump => current%next
    current%next => jump%next
    current => current%next[/color]       
     print *, jump%a
        if(current%a == jump%a) exit
end do


end program count
主要有两点不明白,1,三个自定义类型变量的层次结构,例如root为什么没(轮询)赋值?
2,红字处没明白,我把最后两句合成current=>jump%next程序运行起来就循环个没完了~~我知道我很菜,怎么都理解不了呢~~求助求助ing~~~

回复列表 (共1个回复)

沙发

ijkgkj

---------------------

[url=http://www.oimoc.com/]淘宝网男装冬装新款[/url]
[url=http://www.oimoc.com/]淘宝网商城女装[/url]
[url=http://www.oimoc.com/]淘宝网女装2010夏装[/url]
[url=http://www.oimoc.com/]淘宝网女装冬装[/url]

我来回复

您尚未登录,请登录后再回复。点此登录或注册