@@ -40,6 +40,11 @@ mutable struct SparseMatrixLNK{Tv,Ti<:Integer} <: AbstractSparseMatrix{Tv,Ti}
4040 """
4141 nnz:: Ti
4242
43+ """
44+ Length of arrays
45+ """
46+ nentries:: Ti
47+
4348
4449 """
4550 Linked list of column entries. Initial length is n,
@@ -77,7 +82,7 @@ $(SIGNATURES)
7782
7883Constructor of empty matrix.
7984"""
80- SparseMatrixLNK {Tv,Ti} (m:: Integer , n:: Integer ) where {Tv,Ti<: Integer } = SparseMatrixLNK {Tv,Ti} (m,n,0 ,zeros (Ti,n),zeros (Ti,n),zeros (Tv,n))
85+ SparseMatrixLNK {Tv,Ti} (m:: Integer , n:: Integer ) where {Tv,Ti<: Integer } = SparseMatrixLNK {Tv,Ti} (m,n,0 ,n, zeros (Ti,n),zeros (Ti,n),zeros (Tv,n))
8186
8287"""
8388$(SIGNATURES)
@@ -182,13 +187,22 @@ function Base.setindex!(lnk::SparseMatrixLNK{Tv,Ti}, _v, _i::Integer, _j::Intege
182187 k= lnk. colptr[k]
183188 end
184189
190+ # increase number of entries
191+ lnk. nentries+= 1
192+ if length (lnk. nzval)< lnk. nentries
193+ newsize= Int64 (ceil (5.0 * lnk. nentries/ 4.0 ))
194+ resize! (lnk. nzval,newsize)
195+ resize! (lnk. rowval,newsize)
196+ resize! (lnk. colptr,newsize)
197+ end
198+
185199 # Append entry if not found
186- push! ( lnk. nzval,v)
187- push! ( lnk. rowval,i)
200+ lnk. nzval[lnk . nentries] = v
201+ lnk. rowval[lnk . nentries] = i
188202
189203 # Shift the end of the list
190- push! ( lnk. colptr, 0 )
191- lnk. colptr[k0]= length ( lnk. nzval)
204+ lnk. colptr[lnk . nentries] = 0
205+ lnk. colptr[k0]= lnk. nentries
192206
193207 # Update number of nonzero entries
194208 lnk. nnz+= 1
0 commit comments