list_init(3f) - [M_generic_list] Initialize a head node SELF and optionally store the provided DATA. (LICENSE:MIT)
Synopsis
Description
Author
See Also
Examples
subroutine list_init(self, data)
type(list_node_t), pointer :: self integer, dimension(:), intent(in), optional :: data
Initialize a head node SELF and optionally store the provided DATA.
Fortran 95 Implementation by:
JASON R. BLEVINS Department of Economics, Duke University May 18,2009
M_generic_list(3fm), list_free(3f) list_insert(3f), list_put(3f), list_get(3f), list_next(3f)
Sample program:
! program demo_list_init and module module data2 implicit noneThe test program produces the following output:private public :: data_t public :: data_ptr
! Data is stored in data_t type :: data_t real :: x end type data_t
! A container for storing data_t pointers type :: data_ptr type(data_t), pointer :: p end type data_ptr
end module data2
program demo_list_init use M_generic_list use data2 implicit none type(list_node_t), pointer :: list => null() type(data_ptr) :: ptr ! Allocate a new data element allocate(ptr%p) ptr%p%x = 2.7183 ! Initialize the list with the first data element call list_init(list, transfer(ptr, list_data)) print *, Initializing list with data: , ptr%p ! Allocate a second data element allocate(ptr%p) ptr%p%x = 0.5772 ! Insert the second into the list call list_insert(list, transfer(ptr, list_data)) print *, Inserting node with data: , ptr%p ! Retrieve data from the second node and free memory ptr = transfer(list_get(list_next(list)), ptr) print *, Second node data: , ptr%p deallocate(ptr%p) ! Retrieve data from the head node and free memory ptr = transfer(list_get(list), ptr) print *, Head node data: , ptr%p deallocate(ptr%p) ! Free the list call list_free(list) end program demo_list_init
Initializing list with data: 2.7183001 Inserting node with data: 0.57720000 Second node data: 0.57720000 Head node data: 2.7183001
Nemo Release 3.1 | list_init (3) | February 23, 2025 |