אשמח לעזרה בתרגיל הזה אני לא הבנתי בכלל את התרגיל,
הבנתי מה זה מטריצה דלילה אבל לא את מה שצריך לעשות.
כתבו פונקציה Insert(A,B,i,j,k) המכניסה ערך k לתוך מבנה של מטריצה דלילה הממומשת על ידי רשימות מקושרות, לתוך שורה i ועמודה j, כאשר מערך ראשי השורות נתון על ידי A ומערך ראשי העמודות נתון על ידי B.
צריך להבדיל בין שני מקרים. במקרה הראשון (הפשוט מבין השניים), אם המצביע במיקום ה-i במטריצה, מצביע על null אז אין איבר כלל ברשימה בשורה זו, או לחילופין, אם יש איבר ברשימה, אך ה-j של אותו איבר קיים, גדול מה-j שלנו. אנו נכניס את האיבר החדש x לראש הרשימה.
במקרה השני, אינדקס j החדש, הינו גדול מהאינדקס j של האיבר בראש השורה. לכן נחפש בלולאה את האיבר שהאינדקס j שלו גדול יותר מה-j החדש, ואז נדע להכניס את x במיקום אחד לפניו.
פאסודו קוד:
insert(A,B,i,j,k):
x = new(node)
x->i=i
x->j=j
x->k=k
if (A[i] == nil) or (A[i]->j > j):
listInsert(A[i],x)
else:
y = A[i]
z = next(y)
while (z != nil && z->j < x->j) do:
y = z
z = next(z)
listInsert(A[i],x)