poths Δημοσ. 7 Ιανουαρίου 2008 Δημοσ. 7 Ιανουαρίου 2008 compiler microsoft visual 6 c++ dfs με λειστα γειτνιασης .εκτελειτε dfs με λιστα γειτνιασης και κανονικα πρεπει να βγαζει σαν αποτελεσμα 1--2--4--7--5 (3 και 6 δεν βγαζει λογω οτι δεν ειναι σινδεδεμενα) ο γραφος ειναι μη κατευθυνομενος.αποτελεσμα που μου βγαζει το προγραμμα ειναι 1-7-2-4-5. αρχικα αν καπιοσ τρεξει το προγραμμα πρεπει να εισαγει στο προγραμμα τους κομβους ετσι : 1 2 3 4 5 6 7 0 (το μηδεν το βαζω για να κανει στοπ.δεν ειναι κομβος του γραφου απλα εκτελει το break).μετα το προγραμμα μας ζητα να βαλουλε τους γειτονες κομβους οπου link 1: 2 7 0 (μηδεν το βαζω για να κανει brake οπως και παρακατω) link 2: 1 4 5 0 link 3: 6 0 link 4: 2 7 0 link 5: 2 0 link 6: 3 0 link 7: 1 4 0 μας βγαζει σε ενα μενου επιλογων και παταμε : 1 0 (ενα κενο μηδεν για να κανει αναζητηση σε βαθος και να μας εμφανισει τα αποτελεσματα) ΕΔΩ ΚΟΛΑΩ: γιατι βγαζει λαθος αποτελεσματα οπως αναφερω παραπανω!!!!τι λαθος εχω κανει???? ο γραφος: 1----2---5 !κενο! 7----4 (κενο )3-----6 (λεξη κενο βαζω για να φανει ο γραφος καλυτερα) > #include<conio.h> #include<iostream.h> #include<stdlib.h> void create(); // For creating a graph void dfs(); // For Deapth First Search(DFS) Traversal. struct node // Structure for elements in the graph { int data,status; struct node *next; struct link *adj; }; struct link // Structure for adjacency list { struct node *next; struct link *adj; }; struct node *start,*p,*q; struct link *l,*k; int main() { int choice; system("cls"); create(); while(1) { cout<<"-----------------------\n"; cout<<"1: DFS \n 2: Exit \n Enter your choice: "; cin>>choice; switch(choice) { case 1: dfs(); break; case 2: exit(0); break; default: cout<<"\nIncorrect choice!Re-enter your choice \n"; getch(); } } return 0; } void create() // Creating a graph { int dat,flag=0; start=NULL; cout<<"Enter the nodes in the graph(0 to start): "; while(1) { cin>>dat; if(dat==0) break; p=new node; p->data=dat; p->status=0; p->next=NULL; p->adj=NULL; if(flag==0) { start=p; q=p; flag++; } else { q->next=p; q=p; } } p=start; while(p!=NULL) { cout<<"Enter the links to "<<p->data<<" (0 to start) : "; flag=0; while(1) { cin>>dat; if(dat==0) break; k=new link; k->adj=NULL; if(flag==0) { p->adj=k; l=k; flag++; } else { l->adj=k; l=k; } q=start; while(q!=NULL) { if(q->data==dat) k->next=q; q=q->next; } } p=p->next; } cout<<"-------------------------"; return; } // dfs void dfs() { int stack[25],top=1; cout<<"\n\nDeapth First Search Results \n"; cout<<"\n\n---------------------------\n"; p=start; while(p!=NULL) { p->status=0; p=p->next; } p=start; stack[0]=0; stack[top]=p->data; p->status=1; while(1) { if(stack[top]==0) break; p=start; while(p!=NULL) { if(p->data==stack[top]) break; p=p->next; } cout<<stack[top]<<" "; top--; k=p->adj; while(k!=NULL) { q=k->next; if(q->status==0) { top++; stack[top]=q->data; q->status=1; } k=k->adj; } } getch(); return; }
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.