Forum Forum 1 Grupy Ćwiczeniowej Strona Główna

Forum 1 Grupy Ćwiczeniowej
Forum studentów informatyki Politechniki Białostockiej
 

Algorytmy - grafy

 
Napisz nowy temat   Odpowiedz do tematu    Forum Forum 1 Grupy Ćwiczeniowej Strona Główna -> 3 semestr
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Dudi



Dołączył: 13 Kwi 2007
Posty: 53
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Pon 20:27, 22 Paź 2007    Temat postu: Algorytmy - grafy

tylko pozmieniac, i najlepiej nie tylko nazwy, a tez tabulatury itd, mozecie tez wlasny stos/kolejke zastosowac, bo moze moją pamiętać, bo się czepiała


Kod:
#include <iostream>
#include <stdio.h>
using namespace std;
typedef int DATA;

typedef struct Node{
   DATA Data;
   Node *wsk;
} *Kolejka;


void KInit(Kolejka *s);
void KIn(Kolejka *k, DATA e);
void KOut(Kolejka *k);
DATA KTop(Kolejka *k);
bool KEmpty(Kolejka *k);

void KInit(Kolejka *k)
{
   *k = NULL;
}

void KIn(Kolejka *k, DATA e)
{
   Kolejka el = new Node;
   el->Data = e;
   el->wsk = NULL;

   if(!(*k)) { (*k) = el; return; }
   Kolejka tmp = *k;
   while(tmp->wsk)
   {
      tmp=tmp->wsk;
   }
   tmp->wsk = el;
}

void KOut(Kolejka *k)
{
   Kolejka tmp;
   if(KEmpty(k)) { std::cerr<<"Blad: Zdejmowanie z pustej kolejki!" <<endl; return;}
   tmp = (*k);
   (*k) = (*k)->wsk;
   delete tmp;
}

DATA KTop(Kolejka *k)
{
   if(!KEmpty(k)) return (*k)->Data;
   else { std::cerr<<"Blad: Odczytywanie wartosci z pustej kolejki!"<<endl; return 0;}
}

bool KEmpty(Kolejka *k)
{
   return (bool)!(*k);
}



int main()
{
   Kolejka Nowy;
   int n;
   Kolejka *tbInc;
   KInit(&Nowy);
   char tmpch[10];

   FILE *in = fopen("in.txt", "r");
   FILE *out = fopen("out.txt", "w");

   fscanf(in, "%d", &n);
   tbInc = new Kolejka[n];
   fscanf(in, "%[ \n]", tmpch);

   for(int i = 0; i<n; i++)
   {
      KInit(&tbInc[i]);

      
      if( fscanf(in, "%[ \n]", tmpch ) != 0){
         cout<< "pustalinia" <<endl;
         continue;
      }

      while(1)
      {
         int d;
         fscanf(in, "%d", &d);
         if( d == 19 )
         {
            d = d;
         }
         cout<<d<< " ";

         KIn(&tbInc[i], d-1);
         if(fgetc(in) != ' ' ) break;
      }
      cout<< endl;
      //fscanf(in, "%[ \n]", tmpch);
   }

   fprintf(out, "\n" );

   //******** algorytm ******
   bool *Odwiedzone = new bool[n];

   for(int i = 0; i<n; i++)
      Odwiedzone[i] = false;

   KIn(&Nowy, 0); Odwiedzone[0] = true; fprintf(out, "%d ", 1);
   while(!KEmpty(&Nowy))
   {
      int index;
      index = KTop(&Nowy); KOut(&Nowy);

      while(!KEmpty(&tbInc[index]))
      {
         int tmp =  KTop(&tbInc[index]);
         if(!Odwiedzone[tmp])
         {
            KIn(&Nowy, tmp );
            fprintf(out, "%d ", tmp +1);
            Odwiedzone[tmp] = true;
         }
         KOut(&tbInc[index]);
      }
   }
   //********** koniec algorytmu ********

   bool ok = 1;
   for(int i=0; i<n; i++)
   {
      if(!Odwiedzone[i]) ok = 0;
   }
   //if(!ok) fprintf(out, "Niespojny!");
   //else fprintf(out, "Spojny!");

   delete [] Odwiedzone;

   fclose(in);
   fclose(out);

   delete [] tbInc;

   system("pause");
}
Powrót do góry
Zobacz profil autora
Dudi



Dołączył: 13 Kwi 2007
Posty: 53
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Pon 20:43, 22 Paź 2007    Temat postu:

aha, i usunac wypisywanie na ekran (cout <<... ) i system(pause) na koncu
Powrót do góry
Zobacz profil autora
dziemian_rec



Dołączył: 08 Mar 2007
Posty: 38
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: z nikąd

PostWysłany: Pią 19:52, 16 Lis 2007    Temat postu:

może jakaś dobra duszyczka ma sortowanie pozycyjne intów ? albo gdzieś w necie znalazła ?
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Forum 1 Grupy Ćwiczeniowej Strona Główna -> 3 semestr Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
deoxBlue v1.0 // Theme created by Sopel stylerbb.net & programosy.pl

Regulamin