graafin kytkentälista

Linux-käyttäjä

Hei Linuxin ja g :n käyttäjät!
seuraavassa on C -ohjelma, joka tallentaa
graafin kytkentälista-tyyppiseen tietorakenteeseen.
kääntäjä on g 4.1.2. ongelmana on
muistialueen ylitys -virhe, kun syötteenä on
esimerkiksi 0 11 22 3Q.

voisiko joku paikantaa virheet. tämä lienee
helppoa Visual C :n debuggerilla. minulla on
käytössä vain hankala ddd ja gdb.

graafin kytkentälista on taulukko, jonka alkiot
sisältävät graafin toisiinsa yhteydessä olevat
pisteet. (graafi on joukko pisteitä ja niitä
yhdistäviä kaaria). alkiot muodostavat kustakin
taulukon alkiosta alkavan alkioiden yksisuuntaisen
listan. (struct alkio) esim. syöte 0 1 luo
taulukkoon listan, jonka arvot ovat 0 (alkupiste)
ja 1 (0-pisteeseen liittyneiden pisteiden joukko.

kiitos neuvoista

2

373

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Linux-käyttäjä

      tässä lähdekoodi:

      #include
      #include // malloc() ja atoi()
      #include // scanf()
      #include // assert()
      using namespace std;

      struct alkio
      {
      int arvo;
      struct alkio* seuraava;
      };

      int main()
      {
      struct alkio* lista[100]; // sadan alkion lista (osoittimia alkioihin)
      char syote[4]; int i;
      int alkupiste = 0, loppupiste = 0;
      struct alkio* solmu = NULL;
      struct alkio* apusolmu = NULL;
      for (i = 0; i < 100; i )
      lista[i] = NULL;
      syote[0] = syote[1] = syote[2] = '\0';

      while(1)
      {
      scanf("%s", &syote);
      if (syote[0] == 'Q')
         break;
      alkupiste = atoi(syote);
      scanf("%s", &syote);
      loppupiste = atoi(syote);

      if (lista[alkupiste] == NULL)
      {
      lista[alkupiste] = (alkio*)malloc(sizeof(alkio));
      lista[alkupiste]->arvo = loppupiste;
      lista[alkupiste]->seuraava = NULL;
      }
      else // listassa on vähintään yksi alkio kohdassa lista[alkupiste]
      {
      solmu = lista[alkupiste];
      while(solmu->seuraava)
      solmu = solmu->seuraava;
      assert(solmu->seuraava == NULL); // nyt solmu osoittaa listan
                     // viimeiseen alkioon
      struct alkio* uusiSolmu = (alkio*)malloc(sizeof(alkio));
      solmu->seuraava = uusiSolmu;
      uusiSolmu->seuraava = NULL;
      solmu->arvo = loppupiste;
      }
      }
      solmu = lista[0];
      for (i = 0; i < 10; i )
      {
      cout seuraava)
      {
      apusolmu = solmu->seuraava;
         cout arvo seuraava;
      free( (void*)solmu);
      solmu = apusolmu;
      }
      free( (void*)solmu);
      }
      solmu = lista[ i];
      }
      }

    • Aku Ankka

      Ei mulla tuu muistialueen ylitystä:
      0 1
      1 2
      2 3
      Q
      0->1->
      1->1->
      2->2->
      3->3->
      4->
      5->
      6->
      7->
      8->
      9->

      g versio 4.1.3.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Tänään pyörit ajatuksissa enemmän, kun erehdyin lukemaan palstaa

      En saisi, silti toivon että sinä vielä palaat ja otetaan oikeasti selvää, hioituuko särmät ja sulaudummeko yhteen. Vuod
      Ikävä
      33
      7144
    2. Huomenta ihana

      Kauniskasvoinen ihanuus 😘 saan sut vielä
      Ikävä
      39
      6625
    3. Hei rakas...

      Miten on työpäivä sujunut? Rakastan sinua 💗
      Ikävä
      29
      3614
    4. Ei tämä etene ikinä

      Kun kumpikaan ei enää ota yhteyttä. Mä en ainakaan uskalla.
      Ikävä
      45
      3130
    5. Edelleen sitä on vaikea uskoa

      Että olisit oikeasti rakastunut muhun
      Ikävä
      34
      2784
    6. Vitsi mihin menit. Heti takasin.

      Mä näin sut tuu takasin! Oli kiire, niin en ehtiny sin perään!
      Ikävä
      16
      2572
    7. Toiveikas vai toivoton

      torstai? Ajatuksia?
      Ikävä
      37
      2198
    8. Mukavaa päivää

      Mun rakkauden kohteelle ❤️ toivottavasti olet onnellinen
      Ikävä
      16
      2116
    9. Voi ei! Jari Sillanpää heitti keikan Helsingissä - Hämmästyttävä hetki lavalla...

      Ex-tangokuningas on parhaillaan konserttikiertueella. Hän esiintyi Savoy teatterissa äitienpäivänä. Sillanpää jakoi kons
      Suomalaiset julkkikset
      48
      1977
    10. Koko ajan olet

      Senkin suhteen kiusannut. Halut on ihan mielettömät olleet jo pitkään
      Ikävä
      34
      1870
    Aihe