Новые сообщения · Правила  
Страница 1 из 11
Модератор форума: Berestovskiy 
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » С, C++ » матрица смежности/Си/загвоздка, нужна помощь!! срочно!!
матрица смежности/Си/загвоздка, нужна помощь!! срочно!!
есть такая программка. она позволяет построить списки смежности для данного ориентированного графа (вообщем-то матрицу смежности). N - количество вершин графа.

Вопрос: как переделать программу так, чтобы N задавалось пользователем?

#include <iostream.h>
#include <conio.h>
#define N 4
#define TRUE 1
#define FALSE 0

typedef struct zveno *svqz;
typedef struct zveno
{
int Key;
svqz Sled;
} Leader;

class Spisok {
private:
svqz beg[N+1];
svqz res;
void Poisk (svqz,int);
public:
Spisok ();
svqz GetPoisk () { return res; }
void MakeGraph ();
void PrintGraph ();
void AddGraph (int,int);
};

void main ()
{
clrscr();
Spisok A;
int x;
int y;

A.MakeGraph ();
cout<<"predstavlenie grafa spiskami smegnosti\n";
A.PrintGraph (); cout<<endl;
getch();
}

void Spisok::Poisk (svqz uksp,int ment)
{
svqz q;

res = NULL; q = uksp;
while ((q!=NULL)&&(res==NULL))
{ if ((*q).Key==ment) res = q; q = (*q).Sled; }
}

void Spisok::AddGraph (int x,int y)
{
svqz ukzv,uzel;

if (beg[x]!=NULL)
{
Poisk (beg[x],y);
if (GetPoisk()==NULL)
{
uzel = new (Leader);
(*uzel).Key = y; (*uzel).Sled = NULL; ukzv = beg[x];
while ((*ukzv).Sled!=NULL)
ukzv = (*ukzv).Sled;
(*ukzv).Sled = uzel; }
}
else { beg[x] = new (zveno);(*beg[x]).Key = y; (*beg[x]).Sled = NULL; }
}

void Spisok::MakeGraph ()
{
int x,y;

cout<<"vvodite nachalo dygi: "; cin>>x;
cout<<"vvodite konec dygi: "; cin>>y;
while (x!=0)
{
AddGraph (x,y);
cout<< "vvodite nachalo dygi: "; cin>>x;
cout<<"vvodite konec dygi: "; cin>>y;
}
}

void Spisok::PrintGraph ()
{
svqz ukzv;

for (int i=1;i<N+1;i++)
{ cout<<"..."<<i; ukzv = beg[i];

while (ukzv!=NULL) { cout<<(*ukzv).Key; ukzv = (*ukzv).Sled; }
cout<<endl;
}
}

Spisok::Spisok() { for (int i=0;i<N+1;i++) beg[i] = NULL; }

1 | Автор: nikalerka | 2010-11-23, 19:08   |  Репутация: [ + 0 ]
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » С, C++ » матрица смежности/Си/загвоздка, нужна помощь!! срочно!!
Страница 1 из 11
Поиск: