Προς το περιεχόμενο

c++ κολαει το προγραμμα οταν κανω run τον κωδικα


poths

Προτεινόμενες αναρτήσεις

Δημοσ.

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;
}

Αρχειοθετημένο

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

  • Δημιουργία νέου...