προβλημα με λίστες

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: Super-Moderators, WebDev Moderators

Απάντηση
tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

προβλημα με λίστες

Δημοσίευση από tommai » 17 Μάιος 2010 14:54

θέλω να δημιουργήσω μια λίστα 7 στοιχείων να βρω το ΕΛΑΧΙΣΤΟ στοιχείο τής λίστας με τον αλγόριθμο min να διαγράψω το στοιχείο από την λίστα και να το τυπώσω στην οθόνη!
Τελευταία επεξεργασία από το μέλος tommai την 19 Μάιος 2010 20:14, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
xultimatex
Honorary Member
Δημοσιεύσεις: 2505
Εγγραφή: 26 Ιούλ 2003 13:02
Τοποθεσία: Ξάνθη
Επικοινωνία:

προβλημα με λίστες

Δημοσίευση από xultimatex » 17 Μάιος 2010 16:09

Η συνδεδεμένη λίστα είναι δυναμική δομή αποθήκευσης ενώ ο πίνακας είναι στατική. Αυτό δίνει στην καθε μια πλεονεκτήματα και μειονεκτήματα.

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

Αντίθετα αν ήταν συνδεδεμένη λίστα θα επρεπε απλά να αλλάξεις δυο συνδέσεις. Αν πρόκειται για άσκηση νομίζω πως οταν λέει δημιουργία λίστας εννοεί την συνδεδεμένη.


:arrow: http://www.google.gr/search?q=linked+li ... =firefox-a
:arrow: Αν προσπαθείς πολύ για να πετύχεις κάτι, ίσως το κάνεις με λάθος τρόπο...

tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

προβλημα με λίστες

Δημοσίευση από tommai » 19 Μάιος 2010 18:40

προσπάθεια 2
:P

ναι για άσκηση προκητε και συνεχόμενη λίστα.....

Κώδικας: Επιλογή όλων

{
int A[7]={1,2,3,4,5,6,7}
int i,min;
min=A[0];
for &#40;i=0;i<7;i++&#41;
if &#40;A&#91;i&#93;<min&#41;
min=A&#91;i&#93;
cout<<min;
&#125;

απλά δεν γνωρίζω πώς να διαγράψω αυτό το στοιχείο......
ας μου απαντήσει κάποιος αν είναι σωστή η σκέψη μου.......

Άβαταρ μέλους
xultimatex
Honorary Member
Δημοσιεύσεις: 2505
Εγγραφή: 26 Ιούλ 2003 13:02
Τοποθεσία: Ξάνθη
Επικοινωνία:

προβλημα με λίστες

Δημοσίευση από xultimatex » 19 Μάιος 2010 19:24

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

tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

προβλημα με λίστες

Δημοσίευση από tommai » 19 Μάιος 2010 19:40

καλό αυτό...το ένα όμως που θα πάει εκτός λίστας?

Κώδικας: Επιλογή όλων

&#123;
int A&#91;7&#93;=&#123;1,2,3,4,5,6,7&#125;
int i,min,telos; //Δήλωση λίστας;

telos=min;

min=A&#91;0&#93;;
for &#40;i=0;i<7;i++&#41;
if &#40;A&#91;i&#93;<min&#41;
min=A&#91;i&#93;


A&#91;5&#93;=A&#91;6&#93;;
A&#91;3&#93;=A&#91;4&#93;;
A&#91;1&#93;=A&#91;2&#93;;

telos--;

cout<<"H lista meta th diagrafh einai&#58; ";
for&#40;i=0; i<=telos; i++&#41;
&#123;
cout<<A&#91;i&#93;;
&#125;
&#125;

cout<<min;
&#125;

φίλε μου αυτό εννοείς....??

Άβαταρ μέλους
xultimatex
Honorary Member
Δημοσιεύσεις: 2505
Εγγραφή: 26 Ιούλ 2003 13:02
Τοποθεσία: Ξάνθη
Επικοινωνία:

προβλημα με λίστες

Δημοσίευση από xultimatex » 20 Μάιος 2010 03:48

Όχι ακριβώς αλλά νομίζω το έπιασες το νόημα..

Κώδικας: Επιλογή όλων

int A&#91;7&#93;=&#123;1,2,3,4,5,6,7&#125;
int i, min;

min=0;
for&#40;i=1;i<7;i++&#41; &#123;
   if &#40;A&#91;i&#93;<A&#91;min&#93;&#41; &#123;min=i;&#125;
&#125;

for&#40;i=min;i<7-1;i++&#41; &#123;
  A&#91;i&#93;=A&#91;i+1&#93;;
&#125;
Τώρα για να είναι τελείως σωστό πρέπει να ορίσεις τον πίνακα σε ένα μέγιστο μέγεθος και εσύ να κρατάς το πραγματικό μέγεθος για να μην τον σκανάρεις άδικα. Στο τέλος απλά μειώνεις κατά ένα το πραγματικό μέγεθος για να μην υπολογίζεις το τελευταίο διπλό στοιχείο.
:arrow: Αν προσπαθείς πολύ για να πετύχεις κάτι, ίσως το κάνεις με λάθος τρόπο...

tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

προβλημα με λίστες

Δημοσίευση από tommai » 21 Μάιος 2010 15:06

ευχαριστώ xultimatex

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες