Array元素不从其父数组继承POINTER attr

时间:2016-02-25 12:19:38

标签: linked-list fortran intel-fortran

我必须通过某种方法将数百万个编号的三角形分类为不同的正方形(假设有1000个正方形),但我不知道在判断之前有多少个三角形属于某个正方形。所以我需要1000个链表,这样我就可以存储任意长度的相关三角形数量。

但似乎我不能对一个1000元素的头部数组进行decalre以在Fortran(英特尔Visual Fortran 2011)中创建1000个链接列表,并且存在错误:

  

LoopLinkedList.for(34):错误#7121:ptr dummy可能只是与ptr关联的参数,并且此数组元素或节不继承POINTER   来自其父数组的attr。 [CURRENT]

以下是我测试程序的代码:

   module global
       type node
         integer i
          type(node) ,pointer ::next
       end type node
   end module global 


   program  LinkedList
   use global

   integer k
    interface 
    subroutine insertItem(pos,item)
     use global
     implicit none 
     type(node) ,pointer ::pos,item
    end subroutine insertItem
    end interface 

   type(node), pointer::item,head(:),current(:)


   allocate(head(1000))
   allocate(current(1000))
    head(1) = node(1,head(1))
   current(1)=head(1)


    do k  =2,10
    allocate(item)
    !allocate(current%next) 
    item%i = k
    call insertItem(current(1),item)
   current(1) =item
    end do



    k =current(1)%i
    do while(.true.) 
      write(*,*) current(1)%i
     if(.not.associated(current(1)%next)) exit
      current(1) =current(1)%next
      if(current(1)%i.eq.k)exit
    end do

    deallocate(head)
    deallocate(current)
   end program LinkedList



    subroutine insertItem(pos,item)
     use global
     implicit none 

     type(node) ,pointer ::item,pos

     if(associated(pos%next)) then
     item%next =>pos%next
     pos%next=>item
     end if

  end subroutine insertItem

0 个答案:

没有答案