回 帖 发 新 帖 刷新版面

主题:请问如何对链表进行公用空间的传递参数?

先设置了一个datalink类型为:
    module dtlk !data link list
    type::datalink
      double precision val1 !incre volume for each shell
      double precision val2 !temperature for each shell
      type(datalink),pointer::next
    end type datalink
    end module dtlk

再设置了一个datalink类型的链表及指针    
type(datalink),pointer::head(:),p

现在在主程序中已经定义了一个链表头    allocate(head(ncoil))
然后想在其他子程序中使用到该链表,不知道如何才能在其他子程序中对head可见?
谢谢!


回复列表 (共8个回复)

沙发

用FORTRAN最好不要用链表,内存使用效率太低。。。

板凳

[quote]再设置了一个datalink类型的链表及指针    
type(datalink),pointer::head(:),p[/quote]

这个是在主程序里设置的吗?如果是,再用一个 Module 包含它。

Module DataMod
  Use dtlk
  type(datalink),pointer::head(:),p
End Module DataMod

然后主程序和子程序分别 use 它

Program Main
  Use DataMod
  Allocate( head )
  Call sub()
End Program Man

Subroutine sub()
  Use DataMod
  Allocate( head%Next )
End Subroutine sub


3 楼

那用什么? 用一个大数组?

4 楼

[quote]那用什么? 用一个大数组?[/quote]
是这个意思。

5 楼

有时候要好几千个数据,怕数组不够使的。。

6 楼

才几千, 绝对够. 几百万就难说了.
不一定全部读入, 没行读2个就换行也可以的.

7 楼

多谢!

8 楼

挖坟啊?

我来回复

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