Разработка алгоритмов и программ выполнения операций над последовательными и связанными представлениями структур данных — страница 7

  • Просмотров 4107
  • Скачиваний 201
  • Размер файла 39
    Кб

совпали выходищие вершины... Spisok *max=Y[j]; //max глядит на начало списка Y[j] int Flag=0; //Просто флаговая переменная while(max!=NULL){ //Проверяем на совпадения "входящие" вершины if(X[i].J==max->index)Flag=1;//если нашли повторение, то выход max=max->next; //передвигаемся на следующий элемент списка } if(Flag==0){ //если небыло совпадений вершин, то... всё понятно: Spisok *end=Z[j], *beg=Z[j], *pred=Z[j]; while (end !=NULL) {pred = end ;end = end ->next;} end = pred; if((beg==NULL)&&(end==NULL))Z[j]=beg=end=new(Spisok); else end = end -> next

= new (Spisok); end -> next = NULL; end -> index = X[i].J; } //cout<<"\b|"; } //cout<<"\b\\"; } //cout<<"\b \b"; DeleteY(Y,n); //Убийство связанного графа Игрыка! return Z; } /////////////////////////////////////////////////////////////////////////////////////////////////////// void Demo(void) /* Х - в последовательном представлении У - в связанном представлении*/ { int n=4,N2; clrscr(); //очистка экрана CursorOff(); cout<<"\t\tДемонстрация работоспособности программы."<<endl; char st [] ="GrapH.txt"; //имя генерируемого файла

cout<<"\t\tИмя файла с данными задачи: "<<st<<endl; WriteFile(st,n); //генерация файла с н вершинами n=HowMuch(st); //подсчет числа вершин графов int N1 = Number(N2,st); //подсчет числа дуг Array *X = new Array [N1]; //выделение памяти для графа в последоват представлении X = ReadFileX(X,st); //чтение графа в последовательном представлении cout << "\n X в последовательном"; print3(X,N1,n); //вывод графа в последовательном представлении Spisok **Y = new Spisok *[n]; //выделение памяти для

графа в связанном представлении for (int i=0;i<n;i++) Y[i] = new Spisok;//выделение памяти для графа в связанном представлении Y = ReadFileY(Y,st); //чтение графа в связанном представлении cout << "\n Y в свяанном"; print2(Y,n); //печать графа в связанном представлении Array *Z = new Array[n]; //выделение памяти для графа в последоват представлении int nZ=N1; Z=RaznostZ(n,nZ,X,Y,Z); //считаем разность графов: первый параметр - число вершин, второй и третий //граффы в соответствующем

представлении. cout<<"\n Z=X-Y в последовательном"; print3(Z,nZ,n); //вывод графа в последовательном представлении //Spisok **Z1 = new Spisok *[n];//выделение памяти для графа в связанном представлении //for (i=0;i<n;i++) {Z1[i] = new Spisok;Z1[i]= NULL;}//выделение памяти для графа в связанном представлении Y=RaznostY(n,N1,X,Y); //считаем разность графа и записываем это в граф Y cout<<"\n новый Y - в связанном представлении"; //Вывод подсказки - "Что делать" print2(Y,n); //печать

графа в связанном представлении delete [] X; //удаление из памяти графа Х delete [] Z; DeleteY(Y,n); //Убийство связанного графа Игрыка! //DeleteY(Z1,n); //Убийство связанного графа Зюблы! cout<<"\n\t\t\tPress Any Key to continue\b"<<flush;//Вывод подсказки - "Что делать дальше" getch(); //Ждём нажатия любой клавиши } //////////////////////////////////////////////////////////////////////////////// void TimeOut(int Tik, float TikTak[], int Mas_x[], int Mas_y[],int Mas_z[]) { clrscr(); int i=0,j=0,k=0,h=0,count=0; cout<<'\n'; for(;i<N;i++)for(;j<M;j++) A[i][j]=0; for (k = 0; k <