Dynaaminen, linkitetty lista MSVisual C++

miksei seuraava ratkaisu toimi MSVisual C -kääntäjällä, vaikka se käsittääkseni on C -standardin mukainen?

struct NODE
{
int entry;
int *nxt;
};

int main()
{
NODE *first = NULL;
NODE *current, *next;

int i = 0;

while ( i < 10 )
{
next = new NODE;
cin >> next->entry;

if ( !first )
first = next;
else
{
current = first;
while (current->nxt)
current = current->nxt;
current->nxt = next;
}
}
return 0;

}

Kääntäjä herjaa siis noista sijoituksista, "current = current->next" ja "current->nxt = next". Miten tämä pitäisi toteuttaa VisualStudiossa?
9611
Äänestä

Muut lukivat myös

Vastaukset 9

Vanhimmat

structissa näkyy ainakin olevan int* ja sijoitat siihen NODE*. Pitäis olla samaa tyyppiä..

Äänestä
  • Ai perkele, niinpä onkin! Kiitos! Aina tollaisia lapsuksia ei näköjään itse huomaa :-)

    Äänestä

  • kodari = new kodari kirjoitti:

    Ai perkele, niinpä onkin! Kiitos! Aina tollaisia lapsuksia ei näköjään itse huomaa :-)

    Tekikö tuo ohjelma käännöksen jälkeen mitään?

    Äänestä

  • Oiskohan noin? kirjoitti:

    Tekikö tuo ohjelma käännöksen jälkeen mitään?

    Taisi näkyä sinisessä ikkunassa rutosti pääsisäishexoja ilman luutia...hei katsokaa noita...ai noitako tuolla...eikun noita tuolla...herranjestas noita...onkohan se paha atk-noita...jumannngggeuta nyt se meni tonne atk-väkijoukkoon haastaan riitaa...älä hitossa, laittakaa sille noidalle luuta kurkkuun...joo luuta kurkkuun vaan...hei nyt se tulee tänne...kääk...älä ole näkevinäsi sitä...kuwumpifff tweiffttä käwffki twunggea muwwe wwuudan kuwwkguunnggh...

    Äänestä

  • Oiskohan noin? kirjoitti:

    Tekikö tuo ohjelma käännöksen jälkeen mitään?

    Ei, mutta ei sen tarvinnutkaan. Se on vasta alku toteutukselle

    Äänestä

Nipotusta tuosta NODE-nimeämisestä. C/C -koodissa (ja monissa muissakin kielissä) on erittäin vahvasti tapana kirjoittaa vain vakiot ja makrot kokonaan ISOLLA ja struct-tyypit joko tyyliin Node tai node (C:ssä lähinnä).

Nimeämis- ja muut käytännöt vaihtelevat hieman, eikä ole olemassa sitä 'Ainoaa Oikeaa'. Olennaista on käyttää samaa tyyliä läpi koko projektin. Esimerkki:

http://geosoft.no/development/cppstyle.html

Lisää löydät hakusanoilla "c coding style" tms.

Äänestä
  • Ei mitään nipotusta, vaan kiitos vinkistä. Näin uutena koodaajana niitä ei koskaan tule liikaa.

    Äänestä

  • kodari = new kodari kirjoitti:

    Ei mitään nipotusta, vaan kiitos vinkistä. Näin uutena koodaajana niitä ei koskaan tule liikaa.

    ...nimeämistäkin hyödyllisempi vinkki. Kannattaa alustaa nuo noden kenttien arvot samalla kun luot uuden noden. Nykyinen toteutus toimii tuurilla niin pitkään, kun structille varattu muisti sattuu olemaan kivasti nollattua. Siihen ei saa luottaa.

    http://www.cplusplus.com/forum/beginner/944/

    Äänestä

  • 12 kirjoitti:

    ...nimeämistäkin hyödyllisempi vinkki. Kannattaa alustaa nuo noden kenttien arvot samalla kun luot uuden noden. Nykyinen toteutus toimii tuurilla niin pitkään, kun structille varattu muisti sattuu olemaan kivasti nollattua. Siihen ei saa luottaa.

    http://www.cplusplus.com/forum/beginner/944/

    Tattista! Täältähän näyttää saavan oikeasti hyödyllisiä neuvoja, vaikka aluksi sen suhteen olinkin skeptinen

    Äänestä

Kommentoi aloitusta


kodari = new kodari kirjoitti:

miksei seuraava ratkaisu toimi MSVisual C -kääntäjällä, vaikka se käsittääkseni on C -standardin mukainen?

struct NODE
{
int entry;
int *nxt;
};

int main()
{
NODE *first = NULL;
NODE *current, *next;

int i = 0;

while ( i < 10 )
{
next = new NODE;
cin >> next->entry;

if ( !first )
first = next;
else
{
current = first;
while (current->nxt)
current = current->nxt;
current->nxt = next;
}
}
return 0;

}

Kääntäjä herjaa siis noista sijoituksista, "current = current->next" ja "current->nxt = next". Miten tämä pitäisi toteuttaa VisualStudiossa?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu