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
graafin kytkentälista
2
367
Vastaukset
- 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
Klaukkalan onnettomuus 4.4
Klaukkalassa oli tänään se kolmen nuoren naisen onnettomuus, onko kellään mitään tietoa mitä kävi tai ketä onnettomuudes1014398Yleltä tyrmäävä uutinen
Ylen uutisen mukaan Raamattu on keksitty n. 2600. Putoaako kristinuskolta pohja kokonaan alta pois? https://yle.fi/a/743691136- 1861032
Pakko kertoa mies
Äitini tietää, että olen ihastunut sinuun. 😳 halusin että hän näkisi sinun kuvan ja pyysin googlaamaan sinua. Kommentti1091012Millaisia ajatuksia on kaivatusta ja tilanteestanne tänään?
Kerro omista mietteistäsi tai lähetä terveisiä. Ehkä hän lukee ja lähettää sinulle takaisin omia mietteitään.47891- 64871
Sinä vain tulit elämääni
Ja joku tarkoitus sillä on ollut. Näyttämään mitä olen ja kuinka arvokas voisin olla. Se muutti ja käänsi elämäni suunna83863- 64836
Riitta-Liisa ja Toni Roponen: Ero! Riitta-Liisa Roponen kertoo asiasta Instagramissa.
Riitta-Liisa ja Toni Roponen eroavat. Riitta-Liisa Roponen kertoo asiasta Instagramissa. – Talvi on ollut elämäni synk10827Onko se niin
Että meillä molemmilla on niin isot egot ettei voi alentua myöntämään kuin tykkää toisesta64806