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

发布于 2024-12-22 23:58:54 字数 147 浏览 2 评论 0原文

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

我如何以尽可能最好的方式实现链表,如果可能的话,我更喜欢在 Fortran 中使用无锁无等待实现。

谢谢。

I need to implement a link list data structure for my molecular dynamics code in fortran 2003/2008 I am using the newest fortran compilers (Intel).

How do I come about implement the linked list in the best way possible I would prefer a lock-free no wait implementation if possible in Fortran.

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

℉絮湮 2024-12-29 23:58:54

如果您使用数据项和指向下一项的指针创建用户定义类型,这是最简单的。这是假设一个单链表。例如,

   type MyList_type
      integer :: FirstItem
      real :: SecondItem
      etc
      type (MyList_type), pointer :: next_ptr => null ()
   end type MyList_type

然后使用“分配”创建第一个成员。此后,您编写代码来遍历列表,使用 next_ptr 逐步遍历列表。使用“关联”内部函数来测试 next_ptr 是否已定义,或者是否已到达列表末尾。

如果您正在编写普通的顺序 Fortran 程序,那么无锁/无等待不是问题。如果您正在编写多线程/并行程序,那么对变量的一致访问是一个问题。

以下是更多示例:http://fortranwiki.org/fortran/show/Linked+list
更好的是,Metcalf 和 Reid 所著的《Fortran 90/95 Expanded》一书中对 Fortran 中的链表进行了清晰的解释。

It is easiest if you create a user defined type with your data items and the pointer to the next item. This is assuming a singly-linked list. e.g.,

   type MyList_type
      integer :: FirstItem
      real :: SecondItem
      etc
      type (MyList_type), pointer :: next_ptr => null ()
   end type MyList_type

Then create the first member with "allocate". Thereafter you write code to traverse the list, using next_ptr to step through the list. Use the "associated" intrinsic function to test whether next_ptr is defined yet, or instead you have reached the end of the list.

If you are writing an ordinary sequential Fortran program then lock-free/no-wait is not an issue. If you are writing a multi-threaded / parallel program, then consistent access to the variables is an issue.

Here are some more examples: http://fortranwiki.org/fortran/show/Linked+list.
Even better, linked lists in Fortran are clearly explained in the book "Fortran 90/95 Explained" by Metcalf and Reid.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文