Advertisement
Guest User

Untitled

a guest
Nov 14th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.82 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3.  
  4. using namespace std;
  5.  
  6. class Lista;
  7.  
  8. struct sasiad {
  9.     int v;
  10.     Lista *sasiado;
  11. };
  12.  
  13. class Lista {
  14. public:
  15.     typedef sasiad wartosc ;
  16.     private :
  17. struct element {
  18.     wartosc w ;
  19.     element * nastepny ;
  20.     element * poprzedni;
  21.     };
  22.     typedef element * pozycja ;
  23.     private:
  24.     pozycja head;
  25.     public:
  26.     Lista (){
  27.     head = new element;
  28.     head->nastepny = head->poprzedni = head;
  29.     }
  30.     ~ Lista () {
  31.     pozycja p = head->nastepny;
  32.     while (p != head) {
  33.     pozycja nastepny = p->nastepny;
  34.     delete p;
  35.     p = nastepny;
  36.     }
  37.  delete head;
  38.     }
  39.     public:
  40.         bool empty (){
  41.         if ( head == NULL )
  42.         return true ;
  43.         else
  44.         return false ;
  45.     }
  46.         sasiad front (){
  47.         //if (empty()) return 0;
  48.         return head->nastepny->w;
  49.     }
  50.         sasiad back (){
  51.         //if (empty()) return 0;
  52.         return head -> poprzedni -> w;
  53.     }
  54.         void push_front (wartosc w ){
  55.         pozycja p = new element;
  56.         p->w = w;
  57.         p->nastepny = head->nastepny;
  58.         p->poprzedni = head;
  59.         p->nastepny->poprzedni = p;
  60.         p->poprzedni->nastepny = p;
  61.     }
  62.         void push_back (wartosc w ){
  63.         pozycja p = new element;
  64.         p->w = w;
  65.         p->nastepny = head;
  66.         p->poprzedni = head->poprzedni;
  67.         p->nastepny->poprzedni = p;
  68.         p->poprzedni->nastepny = p;
  69.     }
  70.         void pop_front (){
  71.         pozycja p = head->nastepny;
  72.         p->poprzedni->nastepny = p->nastepny;
  73.         p->nastepny->poprzedni = p->poprzedni;
  74.         delete p;
  75.         }
  76.         void pop_back (){
  77.         pozycja p = head->poprzedni;
  78.         p->poprzedni->nastepny = p->nastepny;
  79.         p->nastepny->poprzedni = p->poprzedni;
  80.         delete p;
  81.     }
  82. };
  83.  
  84. class Lista_I {
  85. public:
  86.     typedef int wartosc ;
  87.     private :
  88. struct element {
  89.     wartosc w ;
  90.     element * nastepny ;
  91.     element * poprzedni;
  92.     };
  93.     typedef element * pozycja ;
  94.     private:
  95.     pozycja head;
  96.     public:
  97.     Lista_I (){
  98.     head = new element;
  99.     head->nastepny = head->poprzedni = head;
  100.     }
  101.     ~ Lista_I () {
  102.     pozycja p = head->nastepny;
  103.     while (p != head) {
  104.     pozycja nastepny = p->nastepny;
  105.     delete p;
  106.     p = nastepny;
  107.     }
  108.  delete head;
  109.     }
  110.     public:
  111.         bool empty (){
  112.         if ( head == NULL )
  113.         return true ;
  114.         else
  115.         return false ;
  116.     }
  117.         int front (){
  118.         //if (empty()) return 0;
  119.         return head->nastepny->w;
  120.     }
  121.         int back (){
  122.         //if (empty()) return 0;
  123.         return head -> poprzedni -> w;
  124.     }
  125.         void push_front (wartosc w ){
  126.         pozycja p = new element;
  127.         p->w = w;
  128.         p->nastepny = head->nastepny;
  129.         p->poprzedni = head;
  130.         p->nastepny->poprzedni = p;
  131.         p->poprzedni->nastepny = p;
  132.     }
  133.         void push_back (wartosc w ){
  134.         pozycja p = new element;
  135.         p->w = w;
  136.         p->nastepny = head;
  137.         p->poprzedni = head->poprzedni;
  138.         p->nastepny->poprzedni = p;
  139.         p->poprzedni->nastepny = p;
  140.     }
  141.         void pop_front (){
  142.         pozycja p = head->nastepny;
  143.         p->poprzedni->nastepny = p->nastepny;
  144.         p->nastepny->poprzedni = p->poprzedni;
  145.         delete p;
  146.         }
  147.         void pop_back (){
  148.         pozycja p = head->poprzedni;
  149.         p->poprzedni->nastepny = p->nastepny;
  150.         p->nastepny->poprzedni = p->poprzedni;
  151.         delete p;
  152.     }
  153. };
  154.  
  155. sasiad **wstaw(int n, sasiad **tab)
  156. {
  157.     int w1, w2;
  158.     for (int j=0; j<n; j++)
  159.     {
  160.         //tab[j]=NULL;
  161.         scanf("%d", &w1);
  162.         scanf("%d", &w2);
  163.         tab[w1]->sasiado->push_back(*tab[w2]);
  164.         tab[w2]->sasiado->push_back(*tab[w1]);
  165.         cout << "Test" << endl;
  166.     }
  167.     return tab;
  168. }
  169.  
  170. void dfs (int v, sasiad *sasiedzi[], bool odwiedzony[])
  171. {
  172.     sasiad *wsk ;
  173.     int pom;
  174.     Lista_I s ;
  175.     s.push_back(v);
  176.     while (!s.empty())
  177.     {
  178.         pom=s.back();
  179.         s.pop_back();
  180.         if (!odwiedzony[pom])
  181.         {
  182.             odwiedzony [pom]=true;
  183.             cout << pom << endl;
  184.             wsk=sasiedzi[pom];
  185.             while (wsk != NULL)
  186.             {
  187.                 cout << wsk->v << endl;
  188.                 s.push_back(wsk->v);
  189.                 //wsk=wsk->nastepny;
  190.             }
  191.         }
  192.     }
  193. }
  194.  
  195. //Lista sasiadki[n];
  196.  
  197. int main()
  198. {
  199.     int n, m;
  200.     scanf("%d", &n);
  201.     scanf("%d", &m);
  202.     if (n==m)
  203.     {
  204.         sasiad *tab[n];
  205.         Lista sasiadki[n];
  206.         bool odwiedzony[n];
  207.         for (int i=0; i<n; i++)
  208.         {
  209.              tab[i]=new sasiad;
  210.              odwiedzony[i]=false;
  211.         }
  212.         sasiad **tab2;
  213.         tab2=wstaw(n, tab);
  214.         dfs(0, tab2, odwiedzony);
  215.     }
  216.     else puts("TO NIE KARTOFEL");
  217.     return 0;
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement