Fortran Coder

查看: 6202|回复: 3
打印 上一主题 下一主题

[指针] 用Fortran怎么实现尾插法

[复制链接]

3

帖子

2

主题

0

精华

入门

F 币
33 元
贡献
15 点
跳转到指定楼层
楼主
发表于 2017-2-19 21:50:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想用尾插法建立一个单链,应该怎么用指针去实现?就是那个逻辑关系搞不太清楚。
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

796

帖子

2

主题

0

精华

大宗师

F 币
3787 元
贡献
2266 点
沙发
发表于 2017-2-20 10:05:46 | 只看该作者
[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

3

帖子

2

主题

0

精华

入门

F 币
33 元
贡献
15 点
板凳
 楼主| 发表于 2017-2-20 20:34:04 | 只看该作者
万分感谢,万分感谢!

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

地板
发表于 2017-2-20 21:08:32 | 只看该作者
纯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
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-4-20 10:02

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表