Advertisement
Guest User

Untitled

a guest
Dec 1st, 2015
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.31 KB | None | 0 0
  1. Για να γίνει η περιγραφή της πρόσθεσης θα γίνει περιγραφή του ψευδοκώδικα που παραθέτω παρακάτω (ερώτημα Δ).
  2. Θεωρούμε ότι έχουμε: τους πίνακες Α, Β και 2 μεταβλητές k1, k2 οι οποίες θα αυξάνονται πάντα (όχι πάντα όλες ταυτόχρονα) εκτός αν στους ελέγχους (στα if) βρει 0 δηλαδή μια κενή θέση (τότε δεν θα αυξάνονται) και με βάση αυτές τις μεταβλητές θα γίνονται και οι προσπελάσεις στους πίνακες όπως φαίνεται παρακάτω.
  3. Η διαδικασία έχει ως εξής:
  4. Μπαίνει στο πρώτο for δηλαδή στις γραμμές έπειτα μπαίνει στο δεύτερο for δηλαδή στις στήλες, έπειτα κάνει κάποιους ελέγχους για να δει αν θα κάνει την πρόσθεση και πάλι από την αρχή για την επόμενη γραμμή ή την επόμενη στήλη μέχρι να τελειώσει.
  5. Αυτοί οι έλεγχοι είναι το σημαντικό κομμάτι:
  6. Κάθε πίνακας δεικτών σε λίστες γραμμών έχει 3 στήλες μια για την γραμμή, μία για την στήλη και μια για την τιμή.
  7. Οπότε πρώτα ελέγχει αν η γραμμή είναι ίση με την γραμμή που βρισκόμαστε από το for (το i δηλαδή), αν η στήλη είναι ίση με την στήλη που βρισκόμαστε από το 2o for (το j δηλαδή) του πίνακα Α ΚΑΙ του πίνακα Β, αν ισχύει όλο το παραπάνω τότε σημαίνει ότι και οι 2 πίνακες έχουν μη-μηδενικό στοιχείο στη στήλη και γραμμή τους οπότε τα προσθέτει (τα 2 στοιχεία από τους 2 πίνακες).
  8. Αν αυτός ο έλεγχος δεν βγει αληθές τότε προχωράει στο επόμενο (else if) έλεγχο όπου αφού οι 2 πίνακες δεν περιέχουν την ίδια στήλη και ίδια γραμμή για να τα προσθέσει τους ελέγχει ξεχωριστά έστω πρώτα το πίνακα Α (δηλαδή τους κόμβους που αφορούν το πίνακα Α), ελέγχει αν η γραμμή είναι ίση με την γραμμή που βρισκόμαστε από το for (το i δηλαδή), αν η στήλη είναι ίση με την στήλη που βρισκόμαστε από το 2o for (το j δηλαδή) μόνο του πίνακα Α αυτή τη φορά (χωρίς το έλεγχο για το Β πίνακα), αν ισχύει όλο το παραπάνω τότε σημαίνει ότι ο πίνακας Β στη θέση αυτή είχε 0 και συνεπώς καταλαβαίνουμε ότι δεν δημιουργήθηκε κόμβος ενώ ο πίνακας Α στη θέση αυτή είχε μη-μηδενικό στοιχείο.
  9. Αν και αυτός ο έλεγχος δεν βγει αληθές τότε προχωράει στο επόμενο (else if) έλεγχο όπου ελέγχει ξεχωριστά το πίνακα Β (δηλαδή τους κόμβους που αφορούν το πίνακα Β) αυτή τη φορά, ελέγχει αν η γραμμή είναι ίση με την γραμμή που βρισκόμαστε από το for (το i δηλαδή), αν η στήλη είναι ίση με την στήλη που βρισκόμαστε από το 2o for (το j δηλαδή) μόνο του πίνακα Β (χωρίς το έλεγχο για το Α πίνακα), αν ισχύει όλο το παραπάνω τότε σημαίνει ότι ο πίνακας Α στη θέση αυτή είχε 0 και συνεπώς καταλαβαίνουμε ότι δεν δημιουργήθηκε κόμβος ενώ ο πίνακας Β στη θέση αυτή είχε μη-μηδενικό στοιχείο.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement