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 | 2270 (1504) | krneki0001 |
» | enojno povezan seznam -izpis nazajOddelek: Programiranje | 3769 (3309) | Randomness |
» | pomoc pri skladuOddelek: Programiranje | 1391 (1316) | NoUse4AName |
» | [C++] NULL: Undeclared identifier - HELP!Oddelek: Programiranje | 1275 (1213) | CCfly |
» | c++ header fileOddelek: Programiranje | 889 (848) | Vesoljc |