Forum » Programiranje » [c++] dvosmerno povezan seznam
[c++] dvosmerno povezan seznam
upirna ::
Tkole. Spravil sem se narest dvosmerni povezan sezanm v c++. Načrt je takle: Defineram 3 kazalce (na prvo vozlišče, na trenutno vozlišče, na zadnje vozlišče). Skratka mislm da v tem ni problem, ampak preprosto mi ne rata napisat sintakse v Visual C++ 2003. Prosil bi nekoga, da malo pogleda kodo in pove kje je napaka (error C2501: 'prejsnji' : missing storage-class or type specifiers mi javi Visual Studio).
.
Hvala!
.
Hvala!
// kazalci.cpp : Defines the entry point for the console application. // #include "stdafx.h" struct Voz{ int id; Voz* naslednji; Voz* prejsnji; Voz* trenutni; }; //deklaracije osnovnih tipov Voz* prejsnji; Voz* naslednji; Voz* trenutni; prejsnji=0; naslednji=0; trenutni=0; int main() { for(int i=0; i<10; i++){ trenutni = new Voz; trenutni->id = i; trenutni->trenutni = trenutni; trenutni->prejsnji = prejsnji; trenutni->naslednji = prejsnji->trenutni; } system("pause"); return 0; }
[to sporočilo bo spremenil upirna, kadar bo to njemu pasalo]
- spremenil: upirna ()
OwcA ::
Na prvi vrg uča bi rekel, da je problem v ciklični odvisnosti. V definiciji Voz se že sklicuješ na Voz. Poskusi z ločeno deklaracijo.
Otroška radovednost - gonilo napredka.
snow ::
Pomisli kam kaze 'prejsni' v prvi iteraciji. In v vseh naslednih. Na 0. Nikoli ne spremeniš globalni 'prejsni'.
prejsnji->trenutni... je pa bog ve kje.
prejsnji->trenutni... je pa bog ve kje.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins
sid_dabster ::
Ok, snow, BW, ocitno se fantu program se prevede ne, tako da je potrebno najprej razresiti ta misterij.
Torej, upirna, naredi sledece:
prva stvar: Povej, v kateri vrstici je napaka.
Druga stvar: poglej, ce stvar prevajas kot C++ (ker v C ima, kot najverjetneje ze ves, keyword struct nekoliko drugacen pomen).
To, da se v definiciji Voz ze sklicujes na Voz, bi v C++ moralo delovati, v ANSI C-ju pa bi bilo potrebno napisati npr.takole:
Torej, upirna, naredi sledece:
prva stvar: Povej, v kateri vrstici je napaka.
Druga stvar: poglej, ce stvar prevajas kot C++ (ker v C ima, kot najverjetneje ze ves, keyword struct nekoliko drugacen pomen).
To, da se v definiciji Voz ze sklicujes na Voz, bi v C++ moralo delovati, v ANSI C-ju pa bi bilo potrebno napisati npr.takole:
typedef struct _voz{ int id; struct _voz* naslednji; struct _voz* prejsnji; struct _voz* trenutni; } Voz;
Fallen beyond all grace deeper and deeper
The sound of her own blood dripping
Like sacred tears from a bleeding rose...( Embraced, Within)
The sound of her own blood dripping
Like sacred tears from a bleeding rose...( Embraced, Within)
sid_dabster ::
OK, bw, kaj sm zajebu
Fallen beyond all grace deeper and deeper
The sound of her own blood dripping
Like sacred tears from a bleeding rose...( Embraced, Within)
The sound of her own blood dripping
Like sacred tears from a bleeding rose...( Embraced, Within)
TBit ::
Jst napako vidim predvsem v tem, da kazalcem nastavlja vrednos izven kode kjer se program izvaja.
Zato premakni ukaze
prejsnji=0
...
...
v funkcijo Main() ter compiler bi moral prevesti program.
Zato premakni ukaze
prejsnji=0
...
...
v funkcijo Main() ter compiler bi moral prevesti program.
sid_dabster ::
U, tiboga, pa res... Sploh nisem opazil
Fallen beyond all grace deeper and deeper
The sound of her own blood dripping
Like sacred tears from a bleeding rose...( Embraced, Within)
The sound of her own blood dripping
Like sacred tears from a bleeding rose...( Embraced, Within)
sid_dabster ::
Fallen beyond all grace deeper and deeper
The sound of her own blood dripping
Like sacred tears from a bleeding rose...( Embraced, Within)
The sound of her own blood dripping
Like sacred tears from a bleeding rose...( Embraced, Within)
Gundolf ::
Naslednjič upirna, compiler poleg vrste napake vedno vrne tudi mesto napake. Zelo pomembna informacija - v bistvu celo bolj kot vrsta napake ;)
upirna ::
Hvala za pomoč, rešitev je po vaših navodilih taka:
#include "stdafx.h" #include <iostream> #include <cstdlib> using namespace std; struct Voz{ int id; Voz* naslednji; Voz* prejsnji; Voz* trenutni; }; //deklaracije osnovnih tipov Voz* prejsnji; Voz* naslednji; Voz* trenutni; int main() { prejsnji=0; naslednji=0; for(int i=0; i<10; i++){ trenutni = new Voz; trenutni->id = i; trenutni->trenutni = trenutni; trenutni->prejsnji = prejsnji; if(prejsnji!=0){ trenutni->naslednji = prejsnji->trenutni; } prejsnji = trenutni; } system("pause"); return 0; }
[to sporočilo bo spremenil upirna, kadar bo to njemu pasalo]
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | DIJKSTROV_ALGORITEMOddelek: Programiranje | 2223 (1457) | krneki0001 |
» | enojno povezan seznam -izpis nazajOddelek: Programiranje | 3641 (3181) | Randomness |
» | pomoc pri skladuOddelek: Programiranje | 1331 (1256) | NoUse4AName |
» | [C++] NULL: Undeclared identifier - HELP!Oddelek: Programiranje | 1227 (1165) | CCfly |
» | c++ header fileOddelek: Programiranje | 853 (812) | Vesoljc |