» »

[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!


// 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.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

BigWhale ::

Na konec for zanke daj prejsnji = trenutni;

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:

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)

BigWhale ::

LOL

;>

sid_dabster ::

OK, bw, kaj sm zajebu:8)
Fallen beyond all grace deeper and deeper
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.

sid_dabster ::

U, tiboga, pa res... Sploh nisem opazil :D
Fallen beyond all grace deeper and deeper
The sound of her own blood dripping
Like sacred tears from a bleeding rose...( Embraced, Within)

BigWhale ::

Sid, nic... Hecno je, da smo mu stvar 'popravil' se preden se mu je prevedla. ;>

sid_dabster ::

0:)
Fallen beyond all grace deeper and deeper
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 ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

DIJKSTROV_ALGORITEM

Oddelek: Programiranje
142206 (1440) krneki0001
»

enojno povezan seznam -izpis nazaj

Oddelek: Programiranje
243610 (3150) Randomness
»

pomoc pri skladu

Oddelek: Programiranje
51315 (1240) NoUse4AName
»

[C++] NULL: Undeclared identifier - HELP!

Oddelek: Programiranje
101215 (1153) CCfly
»

c++ header file

Oddelek: Programiranje
5843 (802) Vesoljc

Več podobnih tem