Премини към съдържанието

Препоръчан отговор


Здравейте! Нужна ми е помощ за следната функция за показване и преброяване на изолираните върхове в граф.

#include<iostream>

using namespace std;
// bool tree=true;
struct folEl{
    
int key;
    
struct folEl *next;
};


struct elem{
    
int key;
    
struct folEl *el;
    
struct elem *next;
    
short visited;
}*
p;


void insertElem(int k){
    if(!
p)
    {
    
p=new elem;
    
p->key=k;
    
p->next=NULL;
    
p->el=NULL;
    
p->visited=0;
    }
    else
    {
        
elem *a=p;
        while(
a->next!=NULL)
        {
            
a=a->next;
        }
        
elem *temp=new elem;
        
temp->key=k;
        
temp->next=NULL;
        
temp->el=NULL;
        
temp->visited=0;
        
a->next=temp;
    }
}


void printGraph()
{
    
cout<<"\n Elementite sa: "<<endl;
    
elem *a=p;
    while(
a)
    {
        
cout<<" "<<a->key<<"->";
        
            
folEl *z=a->el;
            while(
z)
            {
                
cout<<" "<<z->key<<" ";
                
z=z->next;
            }
            
a=a->next;
            
cout<<endl;
    }
    
cout<<endl;
}


void addF(elem *q,int k)
{
    if(!
q->el)
    {
        
folEl *temp=new folEl;
        
temp->key=k;
        
temp->next=NULL;
        
q->el=temp;
    }
    else
    {
        
folEl *p=q->el;
        while(
p->next)
        {
            
p=p->next;
        }
        
folEl *temp=new folEl;
        
temp->next=NULL;
        
temp->key=k;
        
p->next=temp;
    }
}


elem *checkExist(int k)
{
    
elem *a=p;
    while(
a)
    {
        if(
a->key==k)
            return 
a;
        
a=a->next;
    }
    return 
NULL;
}


void add()
{
    
int a;
    
int n=0;

    do
    {
    
cout<<"\n Vuvedi element "<<n+1<<": ";
    
cin>>a
        if(
a!=0)
        {    
            if(!
checkExist(a))
            {
                
insertElem(a);
                
n++;
            }
            else 
cout<<"\n Element ("<<a<<") veche sushestvyva!"<<endl;
        }
    }while(
a!=0);

    
elem *q=p;
    while(
q)
    {
        
folEl *e=new folEl;
        
cout<<"\n Vuvedi vruzka na elem (0 za izhod)\n Vuvedi "<<q->key<<" -> ";
        
cin>>a;
        while(
a!=0)
        {
            
cout<<"\n Vuvedi "<<q->key<<" -> ";
            
addF(q,a);
            
cin>>a;
        }
        
q=q->next;
    }
}




int main()
{
    
cout<<"\n Vuvedete elementite v grafa."<<endl;
    
add();
    
printGraph();
   cout<<endl;
    
system("pause");
    return 
0;
}  

 

 

Остана ми само да завърша функцията. Благодаря предварително ! 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.