mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Fortran - ポインタを使用した連結リスト!

[ プログラミング ] [ Fortran ]

こんばんは。

今回は、 Fortran95 でポインタを使用して連結リストを生成する方法についてです。

0. 前提条件

  • LMDE2(Linux Mint Debian Edition 2; 64bit) での作業を想定。
  • GCC 6.3.0 (GFortran) でのコンパイルを想定。
  • Fortran には長けていないので、コードに誤りがあるかもしれない。

1. Fortran コードの作成

linked_list_by_pointer.f95
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
!****************************************************
! 整数値を格納する連結リスト
! : pointer を使用する
!
! date          name            version
! 2017.05.17    mk-mode.com     1.00 新規作成
!
! Copyright(C) 2017 mk-mode.com All Rights Reserved.
!****************************************************
!
program linked_list
  implicit none
  type node
    type (node), pointer :: next_node
    integer value
  end type node
  integer num
  type (node), pointer :: first_node, new_node, p

  nullify (first_node)

  do
    print *, '0 か正の整数を入力してください(負の整数で終了):'
    read *, num
    if (num < 0) exit

    allocate (new_node)
    new_node%next_node => first_node
    new_node%value = num
    first_node => new_node
  end do

  p => first_node
  print *, "================================"
  do while (associated(p))
    print *, p%value
    p => p%next_node
  end do
end program linked_list

2. コンパイル

1
$ gfortran linked_list_by_pointer.f95 -o linked_list_by_pointer

3. 実行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ ./linked_list_by_pointer
 0 か正の整数を入力してください(負の整数で終了):
30
 0 か正の整数を入力してください(負の整数で終了):
20
 0 か正の整数を入力してください(負の整数で終了):
10
 0 か正の整数を入力してください(負の整数で終了):
0
 0 か正の整数を入力してください(負の整数で終了):
-1
 ================================
           0
          10
          20
          30

学生時代に使用した Fortran (当時は大文字の FORTRAN77 )を思い出すべく、簡単なコードを書いてみた次第です。(当時覚えたことはほとんど忘れているので、初心者レベル)

少し前に円周率計算を行ったことはありますが、いずれは、他の複雑な計算等も行ってみたいと考えております。

以上。

Comments