Скачиваний:
10
Добавлен:
01.05.2014
Размер:
1.7 Кб
Скачать
//=== ЏҐаҐЎ®а б ў®§ўа в®¬: Ї®бв஥­ЁҐ бвпЈЁў о饣® ¤ҐаҐў  ===
#include  <stdio.h>
#include  <conio.h>
#include  <stdlib.h>
#include  <string.h>

struct VV { int d;
	     VV * next;
	  };

VV * LIST[100];
int NEW[100], L[100], mt=0, T1[100], T2[100], n=0, m=0 ;

void SDPP (int v, int k)
{ VV * u;
  if(k == n-1)
   { for (int i=1; i<=k; i++) printf("<%2d,%2d>", T1[i], T2[i]);
     printf("\n"); getch();
   }
  else
   { for (u = LIST[v]; u ; u = u->next)
     { if(NEW[u->d])
	{ NEW[u->d] = 0;
	  T1[k+1] = v; T2[k+1] = u->d;
	  SDPP(u->d, k+1);
	  NEW[u->d] = 1;
	}
     }
   }
}

void main()
{ int i, j, f, G[10][10];
  VV * v;
  char s[20];
  for(i=0; i<10; i++)
    for(j=0; j<10; j++) G[i][j] = 0;
  printf("\nSDPP test ====================== (C)lgn, 16.10.03"
         "\n ‚ў®¤ бЇЁбЄ®ў ᬥ¦­®бвЁ...\n");
  do{
     printf( "v[%2d]=", n);
     gets(s);
     for (i=0; i<strlen(s); i++)
     { j = s[i] - '0';
       G[n][j] = G[j][n] = 1;
     }
     n++;
   } while((strlen(s))&&(n < 10));
  n=0;
  for(i=0; i<10; i++)
  { LIST[i] = 0;
    G[i][i] = 0;
    f = 0;
    printf("\n%2d:", i);
    for (j=0; j<10; j++)
     if(G[i][j])
     { f++;
       v = new VV;
       v->d = j; v->next = LIST[i]; LIST[i] = v;
       printf(" %2d", j);
     }
     else printf("  -");
     if(f) n++;
     m+=f;
  }
  printf("\n|V|=%2d, |E|=%2d", n, m/2);

  for(i=0; i<n; i++) NEW[i] = 1;
  T1[0] = 0;
  printf("\nЏ®бв஥­ЁҐ бвпЈЁў ойЁе ¤ҐаҐўмҐў...");
  for (i = 0; i < n; i++)
  { printf("\nRoot is %2d:\n", i);
    T2[0] = i;
    NEW[i] = 0;
    SDPP(i, 0);
    NEW[i] = 1;
  }

  printf("\n ===== Љ®­Ґж =====\n"); getch();
}
Соседние файлы в папке Демонстрационные примеры к курсовой по СиАОД