Fortran Coder

标题: 用Fortran怎么实现尾插法 [打印本页]

作者: james_wang    时间: 2017-2-19 21:50
标题: 用Fortran怎么实现尾插法
我想用尾插法建立一个单链,应该怎么用指针去实现?就是那个逻辑关系搞不太清楚。

作者: li913    时间: 2017-2-20 10:05
[Fortran] 纯文本查看 复制代码
!  主程序
program T
implicit none
type node
    real val
    type(node),pointer :: P
end type
type(node),pointer :: pHead=>null(), pTail=>null(), pTemp=>null()  !指针置空
integer istat, num, i
real rTemp

nullify(pHead, pTail, pTemp )  !断开关联(置空)
open(1,file='1.txt')
num = 0
do  !循环读取数据
    read(1,*,iostat=istat) rtemp
    if(istat/=0) exit
    num =num + 1
    if( .NOT.associated(pHead) ) then  !第一个数据
        allocate(pHead)  !分配空间
        pTail => pHead    !pHead、pTail均指向第一个数据
        !nullify(pTail.P)
        phead.val =rTemp
    else
        allocate(pTail.P)
        pTail => pTail.P
        !nullify(pTail.P)
        pTail.val =rTemp
    end if
end do
close(1)
if( associated(pTail) ) nullify(pTail.P)  !如果有数据,最后一个节点的指针置空
print*,num
do i=1,num  !循环输出
    !if( .NOT.associated(pHead) ) exit
    write(*,*) pHead.val
    pTemp => pHead
    pHead => pHead.P
    deallocate(pTemp)  !销毁数据
end do
pause
end program T

作者: james_wang    时间: 2017-2-20 20:34
万分感谢,万分感谢!
作者: pasuka    时间: 2017-2-20 21:08
纯fortran可以参考#1和#2
#1
http://fortranwiki.org/fortran/show/gen_list
#2
http://flibs.cvs.sourceforge.net ... ures/linkedlist.f90
http://flibs.sourceforge.net/linked_list.html
能够与C混合编程的话,试试玩玩utlist的代码,可以通过iso c binding方式混合编程
utlist: linked list macros for C structures
http://troydhanson.github.io/uthash/utlist.html




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2