我需要在fortran 2003/2008中为我的分子动力学代码实现链接列表数据结构我正在使用最新的fortran编译器(英特尔)。
我如何以尽可能最好的方式实现链表我希望在Fortran中可以使用无锁无等待实现。
谢谢。
答案 0 :(得分:7)
如果您使用数据项和指向下一项的指针创建用户定义类型,则最简单。这是假设一个单链表。如,
type MyList_type
integer :: FirstItem
real :: SecondItem
etc
type (MyList_type), pointer :: next_ptr => null ()
end type MyList_type
然后使用“allocate”创建第一个成员。此后,您编写代码来遍历列表,使用next_ptr逐步执行列表。使用“关联”内在函数来测试next_ptr是否已定义,或者您已到达列表的末尾。
如果您正在编写普通的顺序Fortran程序,那么无锁/无等待不是问题。如果您正在编写多线程/并行程序,那么对变量的一致访问是一个问题。
以下是一些例子:http://fortranwiki.org/fortran/show/Linked+list。 更好的是,Fortran的链接列表在Metcalf和Reid的“Fortran 90/95 Explained”一书中有清楚的解释。