Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> Προγραμματισμός Υπολογιστών Γλώσσες

Πώς να εφαρμόσουν ουρά προτεραιότητας Class Χρησιμοποιώντας Array

αποθηκεύει Μια ουρά δεδομένων στη σειρά και περιέχει δύο λειτουργίες : ώθηση και ποπ . Ώθηση τοποθετεί ένα στοιχείο στο τέλος της ουράς ? Ποπ αφαιρεί το στοιχείο στο μπροστινό και το επιστρέφει . Μια ουρά προτεραιότητας συμπεριφέρεται παρόμοια , με μία διαφορά: ώθηση προσθέτει στοιχεία στην ουρά σε μια ορισμένη σειρά . Οι πίνακες δεν είναι ιδανικά για μια ουρά προτεραιότητας ? Στερούνται ευελιξίας , γεγονός που καθιστά δύσκολο να ταξινομήσετε την ουρά . Ωστόσο , αυτές είναι χρήσιμες για την εκμάθηση της έννοιας . Οδηγίες
Η 1

Επιλέξτε το τύπο δεδομένων ουρά προτεραιότητας σας κατέχει . Αν αυτή είναι η πρώτη σας φορά γράφοντας μια ουρά προτεραιότητας , να επιλέξουν κάτι απλό , όπως ένα ακέραιο . 2

Δημιουργήστε έναν πίνακα για να χρησιμεύσει ως ουρά σας . Αν ο τύπος δεδομένων σας είναι ακέραιος , και θα θέλατε να κρατήσετε 10 αντικείμενα , σειρά σας θα δημιουργηθεί με τη χρήση κώδικα όπως αυτό :

int [ ] arr = new int [ 10 ] ?

Λάβετε νου ότι το 0 είναι ο πρώτος δείκτης του κάθε πίνακα. Για να αποκτήσετε πρόσβαση στο πρώτο δείκτη σύλλ , σας παραπέμπω στην arr [ 0 ] , και εγ [ 9 ], θα έχουν πρόσβαση στο τελευταίο δείκτη σύλλ . Σε αυτή την περίπτωση , arr [ 10 ] προκαλεί ένα σφάλμα .
Εικόνων 3

Καθορίστε τη λειτουργία ταξινόμησης . Θα χρησιμοποιηθεί αργότερα για να ωθήσει τα στοιχεία με τη σωστή σειρά . Η λειτουργία αυτή διαρκεί δύο εισόδους , τότε τα συγκρίνει . Εάν η πρώτη είσοδος έχει μία υψηλότερη τιμή , η συνάρτηση επιστρέφει 1 ? Εάν και οι δύο είσοδοι έχουν την ίδια αξία , επιστρέφει 0 ? Και αν η πρώτη είσοδος έχει μικρότερη τιμή , επιστρέφει -1 . Αν αυτή είναι η πρώτη σας φορά γράφοντας μια λειτουργία ταξινόμησης , και τον τύπο δεδομένων της επιλογής σας είναι ακέραιος αριθμός , θα πρέπει να ξεκινήσετε με αριθμητική σειρά , όπου οι χαμηλότερες αριθμοί έχουν μια χαμηλότερη τιμή . Ταξινόμηση με αριθμητική τιμή , ο κώδικας θα είναι κάπως έτσι :

αν ( πρώτο > δεύτερη ) επιστροφή 1?

Αν ( πρώτο == δεύτερη ) επιστροφή 0?

αν ( πρώτο <δευτερόλεπτο) επιστρέφει -1 ?

Αυτό λειτουργεί επίσης για άλλους τύπους δεδομένων Αριθμός , όπως δίκλινα και επιπλέει . Εάν χρησιμοποιείτε χορδές , μπορείτε να ταξινομήσετε κατά αλφαβητική σειρά .
Η 4

Ξεκινήστε τη λειτουργία ώθησης . Αυτό παίρνει μία είσοδο , το στοιχείο για να ωθήσει στην ουρά , και εξάγει τίποτα . Στην Java , εάν ο τύπος δεδομένων σας είναι ακέραιος , ο κώδικάς σας θα μοιάζει με αυτό :

public void ώθηση ( int in)

κωδικό σας θα είναι παρόμοια στις περισσότερες άλλες γλώσσες προγραμματισμού , συμπεριλαμβανομένων των C και C + + . «Κενό» σημαίνει ότι αυτή η λειτουργία θέληση τίποτα εξόδου .
5

Δημιουργήστε μια σειρά από το ίδιο μέγεθος με τη σειρά που χρησιμοποιείτε για την ουρά σας . Εάν η τρέχουσα σειρά σας μπορεί να κρατήσει 10 ακέραιοι , θα δημιουργήσει μια σειρά όπως αυτό :

int [ ] secondArray = new int [ 10 ] ?

Αυτή η δεύτερη σειρά θα γίνει αργότερα ουρά σας . Εάν η τελευταία καταχώρηση στο array σας είναι πλήρης , αυτό σημαίνει ότι έχετε χρησιμοποιήσει κάθε καταχώρηση στον πίνακα ? . Θα πρέπει να δημιουργείτε έναν πίνακα που είναι μία καταχώρηση μεγαλύτερο
Η 6

Συγκρίνετε την είσοδο σε κάθε στοιχείο στη σειρά σας , αρχίζοντας με την πρώτη , χρησιμοποιώντας τη λειτουργία ταξινόμησης . Πάντα κάνετε είσοδο ώθηση για το πρώτο στοιχείο που τοποθετείτε στη λειτουργία ταξινόμησης . Για να συγκρίνετε εισόδου ώθηση και το πρώτο αντικείμενο από σύλλ , ο κώδικάς σας θα μοιάζει με αυτό :

είδος ( σε , arr [ 0 ] ) ?

Εδώ , "σε" είναι το όνομα που δίνεται σε η μεταβλητή εισόδου από το βήμα 4

Αν αυτό επιστρέφει -1 , είσοδος θέσει ώθηση στο δεύτερο πίνακα: .

secondArray [ 0 ] = σε?

Διαφορετικά , αντιγράψτε το αρχείο στοιχείο από την πρώτη σειρά στη δεύτερη σειρά :

secondArray [ 0 ] = arr [ 0 ] ?

στη συνέχεια, συγκρίνετε εισόδου ώθηση στην ημερήσια διάταξη της πρώτης διάταξης :

είδος ( σε , arr [ 1 ] ) ?

Συνεχίστε αυτό έως ότου εισόδου ώθηση είναι εισαχθεί στο δεύτερο πίνακα ή έως ότου δεν υπάρχουν περισσότερα στοιχεία στην πρώτη σειρά . Στην τελευταία περίπτωση , εισαγωγή τόπου ώθηση ως το επόμενο στοιχείο στη δεύτερη σειρά .
Η 7

Αντιγράψτε το υπόλοιπο των στοιχείων από τον πρώτο πίνακα στο δεύτερο πίνακα . Τώρα εισόδου που ωθούν έχει τοποθετηθεί στο δεύτερο πίνακα, δεν έχετε καμία ανάγκη για τη λειτουργία ταξινόμησης . Από τώρα και στο εξής , χρησιμοποιήστε τη δεύτερη σειρά και όχι το πρώτο ? Η πρώτη σειρά είναι πλέον ξεπερασμένη . Με αυτό , η λειτουργία push είναι πλήρης.
8

Γράψτε τη λειτουργία pop . Αυτό δεν λαμβάνει εισροές , αλλά εξάγει ένα στοιχείο από την ουρά σας . Αν ο τύπος δεδομένων σας είναι ακέραιος , ο κώδικάς σας θα μοιάζει με αυτό :

public int pop ( )

Η δεύτερη λέξη , " int ", σημαίνει ότι αυτή η λειτουργία θα εμφανίσει ένας ακέραιος
Τετάρτη 9

Δημιουργήστε μια δεύτερη σειρά από το ίδιο μέγεθος με την τρέχουσα σειρά σας . Στη συνέχεια , αντιγράψτε το δεύτερο στοιχείο από την πρώτη σειρά στην πρώτη καταχώρηση στη δεύτερη σειρά , το τρίτο στοιχείο στη δεύτερη είσοδο της δεύτερης συστοιχίας , και ούτω καθεξής και ούτω καθεξής , μέχρι να μην υπάρχουν περισσότερες συμμετοχές . Μην αντιγράφετε το πρώτο στοιχείο στην πρώτη σειρά . Εάν σειρά σας περιέχει 4 αντικείμενα , τον κωδικό σας θα μοιάζει κάπως έτσι :

secondArray [ 0 ] = arr [ 1 ] ?

SecondArray [ 1 ] = arr [ 2] ?

secondArray [ 2 ] = arr [ 3] ?

Υπενθυμίζεται ότι ο πρώτος δείκτης ενός πίνακα είναι 0 . Αυτό σημαίνει ότι secondArray [ 0 ] είναι το πρώτο στοιχείο της secondArray , και εγ [ 1 ] είναι το δεύτερο στοιχείο σύλλ .
Η 10

Επιστροφή το πρώτο αντικείμενο από την πρώτη σειρά . Ο κώδικάς σας θα μοιάζει με αυτό :

επιστρέψει arr [ 0 ] ?

Όπως και με τη λειτουργία ώθησης , η δεύτερη σειρά είναι πλέον ουρά σας . Η λειτουργία pop έχει πλέον ολοκληρωθεί .
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα