![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 19.12.2009
Сообщений: 4
|
![]()
есть такая программка. она позволяет построить списки смежности для данного ориентированного графа (вообщем-то матрицу смежности). 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; } |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 22.11.2010
Сообщений: 114
|
![]()
нужно использовать связанный список, при помощи указетелей.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Матрица Смежности | Alex_sim | Помощь студентам | 5 | 18.09.2010 21:37 |
TurboPascal: граф, матрица смежности и матрица инцидентности. | ulala | Помощь студентам | 0 | 02.12.2009 10:11 |
Графы, матрица смежности. | SteRN89 | Помощь студентам | 1 | 14.01.2009 08:11 |