如何在fortran 2003-2008中实现链表

时间:2011-12-27 20:06:23

标签: data-structures linked-list fortran fortran90

我需要在fortran 2003/2008中为我的分子动力学代码实现链接列表数据结构我正在使用最新的fortran编译器(英特尔)。

我如何以尽可能最好的方式实现链表我希望在Fortran中可以使用无锁无等待实现。

谢谢。

1 个答案:

答案 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”一书中有清楚的解释。