Εμφάνιση 1-9 από 9
  1. #1
    Εγγραφή
    19-04-2010
    Μηνύματα
    97
    Downloads
    0
    Uploads
    0
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΑΓ. ΠΑΡΑΣΚΕΥΗ
    Καλησπερα!
    Μου εχει δοθει ο κωδικας απο μια συναρτηση που υποτιθεται οτι αντιστρεφει μια λιστα.Αυτο που πρεπει να κανω ειναι να βρω τα σφαλματα που εχει ο κωδικας.Σας παραθετω τον κωδικα:

    Κώδικας:
    typedef  struct node {
             int value;
             struct node *next;
    
    } *ListNode;
    
    
    
    int reverse(ListNode *head){
    
        ListNode ln1, ln2, ln3, ln4;
    
        if (*head == NULL)
             return(-1);
    
        ln1 = *head;
        ln2 = (*head)->next;
        ln3 = NULL;
    
        while( ln2 != NULL) {
                ln4 = ln2->next;
                ln1->next = ln3;
                ln3 = ln1;
                ln1 = ln2;
                ln2=ln4;
        }
    
        *head = ln1;
        return(0);
    }
    κατ'αρχας,πως πρεπει να γραψω το προγραμμα μου ωστε να το τρεξω,να δωσω 3 νουμερα και να δω τι προβλημα εχει η συναρτηση;

  2. #2
    Εγγραφή
    31-01-2009
    Περιοχή
    ν κοσμος
    Ηλικία
    36
    Μηνύματα
    744
    Downloads
    0
    Uploads
    0
    Τύπος
    Other / Άλλο
    Ταχύτητα
    8.191/381
    ISP
    Conn-x OTE
    DSLAM
    ΟΤΕ - Ν. ΣΜΥΡΝΗ
    Router
    Ομορφο σα και
    SNR / Attn
    29,0(dB) / 11/4(dB)
    Κώδικας:
    int main()
    {
    	node n1,n2,n3,n4;
    	n1.value = 1;
    	n1.next =&n2;
    	n2.value = 2;
    	n2.next  = &n3;
    	n3.value = 3;
    	n3.next  = &n4;
    	n4.next = NULL;
    	n4.value =4;
    
    	ListNode test = &n1;//set
    	while(test)//print
    	{
    		printf("%d",test->value);
    		test = test->next;
    	}
    	test = &n1;//reset
    	reverse(&test);//test
    	while(test)//print
    	{
    		printf("%d",test->value);
    		test = test->next;
    	}
    
    	return 0;
    }
    breakpoint στην reverse και αρχιζεις το debugging

  3. #3
    Εγγραφή
    19-04-2010
    Μηνύματα
    97
    Downloads
    0
    Uploads
    0
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΑΓ. ΠΑΡΑΣΚΕΥΗ
    Σορυ για την ασχετοσυνη μου, αλλα αυτο που μου εχεις γραψει πώς θα το εισαγω στο δικο μου παραδειγμα;Προσπαθησα με καποιες τροποποιησεις να το γραψω,αλλα μου βγαζει ενα σωρο λαθη...

  4. #4
    Εγγραφή
    19-06-2008
    Περιοχή
    127.0.0.1
    Μηνύματα
    1.147
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    14000/700
    ISP
    Conn-x OTE
    Router
    cisco887va+sec-k9
    Path Level
    Fastpath
    Σε ένα άδειο αρχείο C, γράφεις τον κώδικα σου και μετά απο κάτω (στο ίδιο αρχείο) την main.

    Βάλε και κανένα #include <stdio.h> και είσαι έτοιμος να ψάξεις.

  5. #5
    Εγγραφή
    19-03-2009
    Περιοχή
    ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ
    Ηλικία
    48
    Μηνύματα
    288
    Downloads
    0
    Uploads
    0
    Κώδικας:
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef  struct node {
             int value;
             struct node *next;
    
    } *ListNode;
    
    void insert(ListNode *, int);/*ÓõíÜñôçóç åéóáãùãÞò êüìâïõ óôç ëßóôá*/
    
    void printList(ListNode );
    int reverse(ListNode *);
      int main(){
            ListNode  HEAD=NULL;//original list
            insert(&HEAD,1);
            insert(&HEAD,2);
            insert(&HEAD,3);
            insert(&HEAD,4);
            insert(&HEAD,5);
            printf("\ni lista prin to reverse:\n");
            printList(HEAD);
            printf("\ni lista meta to reverse\n");
            reverse(&HEAD);
            printList(HEAD);
            getchar();
            return 0;
        }
        
    void insert( ListNode *Head, int value){
        ListNode current=*Head,previous=NULL,new1=NULL;
        new1 = (ListNode) malloc( sizeof( struct node ) );
        new1->value=value;
        new1->next=NULL;
        if (current==NULL){
            *Head=new1;
        }else{
            while(current!=NULL){
                previous=current;
                current=current->next;    
            }
            if (current==NULL) 
                previous->next=new1;
        }
        
    }
       
    
    
     void printList(ListNode  Head){
            printf("\n i lista einai:\n");
            ListNode x=Head;
            while(x!=NULL){
                printf("%d -->",x->value);
                x=x->next;
            }
            printf("NULL\n");
     }
          
    int reverse(ListNode *head){
    
        ListNode ln1, ln2, ln3, ln4;
    
        if (*head == NULL)
             return(-1);
    
        ln1 = *head;
        ln2 = (*head)->next;
        ln3 = NULL;
    
        while( ln2 != NULL) {
                ln4 = ln2->next;
                ln1->next = ln3;
                ln3 = ln1;
                ln1 = ln2;
                ln2=ln4;
        }
    
        *head = ln1;
        return(0);
    }

  6. #6
    Εγγραφή
    19-04-2010
    Μηνύματα
    97
    Downloads
    0
    Uploads
    0
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΑΓ. ΠΑΡΑΣΚΕΥΗ
    Σ'ευχαριστω παρα παρα πολυ!

  7. #7
    Εγγραφή
    19-04-2010
    Μηνύματα
    97
    Downloads
    0
    Uploads
    0
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΑΓ. ΠΑΡΑΣΚΕΥΗ
    Απ' ό'τι βλεπω, η συνάρτηση που μου έχει δοθεί, αντι να αντιστρέφει μια λίστα,απλά δείχνει το τελευταίο της στοιχείο. Αυτό συμβαίνει επειδή δε γίνεται σύνδεση μεταξύ των κόμβων όταν επιχειρείται η αντιστροφή ή επειδή οι κόμβοι μετά δείχνουν μόνο στο τελευταίο στοιχείο;

  8. #8
    Εγγραφή
    03-09-2006
    Περιοχή
    Porto Salonico
    Ηλικία
    40
    Μηνύματα
    1.976
    Downloads
    2
    Uploads
    0
    Ταχύτητα
    12990/1020
    ISP
    Nova
    Router
    Thomson TG585 v7
    SNR / Attn
    6(dB) / 35(dB)
    Path Level
    Interleaved
    Το next του tail σου στην αρχή είναι null. Όταν γυρίσει η λίστα, θα πρέπει να δείχνει το δεύτερο στοιχείο.

    Βάλε αυτό στο τέλος και θα δουλέψει.

    Κώδικας:
    ln1.next = ln3;
    Τελευταία επεξεργασία από το μέλος pan05 : 28-03-11 στις 20:26. Αιτία: Added code tags

  9. #9
    Εγγραφή
    19-04-2010
    Μηνύματα
    97
    Downloads
    0
    Uploads
    0
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΑΓ. ΠΑΡΑΣΚΕΥΗ
    Χιλια ευχαριστω!

Παρόμοια Θέματα

  1. GreekPhones.info - Αντίστροφη αναζήτηση τηλεφώνων
    Από yannisc στο φόρουμ Web authoring, development & web design
    Μηνύματα: 66
    Τελευταίο Μήνυμα: 15-11-11, 17:08
  2. Διαβασμα απο αρχειο txt και γεμισμα λιστας στη C
    Από ambageo στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμού
    Μηνύματα: 4
    Τελευταίο Μήνυμα: 14-03-11, 00:51
  3. Αντιστροφη του κεφαλικου αριθμου με το msn
    Από geopro64 στο φόρουμ Isdn - Pstn
    Μηνύματα: 13
    Τελευταίο Μήνυμα: 12-02-10, 14:41
  4. H αντίστροφη μέτρηση για το Burning Crusade αρχίζει
    Από Reef στο φόρουμ Games και Online Gaming
    Μηνύματα: 1
    Τελευταίο Μήνυμα: 16-01-07, 14:05
  5. Hellas Sat : Η αντίστροφη μέτρηση άρχισε!!!!!!!!!!!
    Από jimsliakas στο φόρουμ Satellite
    Μηνύματα: 12
    Τελευταίο Μήνυμα: 14-05-03, 09:43

Tags για αυτό το Θέμα

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας