Dvousměrně vázaný seznam – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dvousměrně vázaný seznam – C / C++ – Fórum – Programujte.comDvousměrně vázaný seznam – C / C++ – Fórum – Programujte.com

 

Ondrášek
~ Anonymní uživatel
8 příspěvků
7. 11. 2012   #1
-
0
-

Ahoj,

Napsal jsem tento seznam, který by měl být podle mých představ obousměrný ale šlape jen ve směru doprava :/ Tak se chci zeptat profíků proč nefunguje ve směru doleva. Děkuji mockrát.

Zdroják:

#include<stdio.h>

class Item{

  public:

	  void TiskniHodnoty() {

		  printf("x:%i\n",x);
		  printf("y:%i\n",y);
		  }

	  //SETRY-GETRY

	  int GetX() { return x;  } //TEMAHLE METODAMA JAKOBY ZISKAM PRISTUP K PRIVATNIM PROMENNYM
	  int GetY() { return y;  }

	  void SetX(int NastaveneX) { x = NastaveneX;} //NASTAVIME PRIVATNI PROMENNE
	  void SetY(int NastaveneY) { y= NastaveneY;}

	  void SetDoprava(Item *NastaveneDoprava) { doprava= NastaveneDoprava;}
	  void SetDoleva(Item *NastaveneDoleva) { doprava= NastaveneDoleva;}

	  Item *GetItemDoprava() { return doprava;}
	  Item *GetItemDoleva() { return doleva;}

	  Item() {doprava = this; doleva = this; x=0; y=0; } //SLOVICKO THIS RIKA ZE UKAZUJU NA OBJEKT VE KTEREM PRAVE SEM

	  Item(int ax, int ay) {x =  ax; y = ay; doprava = this; doleva = this; }  //ARGUMENTY U METODY ZACINAJI S PISMENEM a jelikoz a jako argument
	
  private:
	Item *doprava;
	Item *doleva;

	int x;
	int y;
	};

class Seznam{
	
public:

	Seznam() {p_first = NULL; p_last = NULL;}

	void PridejItem(Item polozka) {


		    //NASTAVENI 1. POLOZKY V SEZNAMU

		if(p_first==NULL) { // POKUD JE 1. polozka seznamu nulova tak ji tam pridame

		    Item *p_item = new Item; // VYTVORI NOVEJ ITEM V PAMETI
			p_item->SetX(polozka.GetX()); //NASTAVIME PROMENNE
			p_item->SetY(polozka.GetY());

			p_first = p_item; //NASTAVIM UKAZATEL NA PRVNI POLOZKU SEZNAMU UKAZATALEM VE KTEREM JE NAHRANA POLOZKA
			p_last = p_item;   //NASTAVIM UKAZATEL NA POSLEDNI POLOZKU SEZNAMU JELIKOZ JE V SEZNAMU ZATIM POUZE 1 POLOZKA
			} else 	{
			Item *p_item = new Item; // VYTVORI NOVEJ ITEM V PAMETI
			p_item->SetX(polozka.GetX()); //NASTAVIME PROMENNE
			p_item->SetY(polozka.GetY());


			Item *pomocny_ukazatel = p_last;
		    p_last = p_item; //NASTAVIME UKAZATEL NA POSLEDNI POLOZKU, UKAZATEL NA PRVNI NENASTAVUJEME JELIKOZ TEN MA ZUSTAT STEJNY JELIKOZ PRVNI POLOZKU UZ NEBUDEME MENIT TA JE PROSTE PRVNI A HOTOVO

			//PROVAZANI POLOZEK
			pomocny_ukazatel->SetDoprava(p_item); 
			p_item->SetDoleva(pomocny_ukazatel);
			p_item->SetDoprava(pomocny_ukazatel);
			pomocny_ukazatel->SetDoleva(p_item);
			
			}
       }

	void GetFirst()  {  p_first->TiskniHodnoty(); }
	void GetLast()   {   p_last->TiskniHodnoty(); }

	void VypisSeznam() {
		Item *dement = p_last;

		for(; dement != p_first; dement = (dement->GetItemDoleva()))
		{
			dement->TiskniHodnoty();
		}
		dement->TiskniHodnoty();
	}

	
private:
	Item *p_first; //UKAZATEL NA PRVNI PRVEK
	Item *p_last;  //UKAZATEL NA POSLEDNI PRVEK

	};

int main() {
	
	Item polozka1(0,0);
	Item polozka2(1,1);
	Item polozka3(2,2);
	Item polozka4(3,3);
	Item polozka5(4,4);
	Item polozka6(5,5);

	Seznam Oseznam;
	Oseznam.PridejItem(polozka1);
	Oseznam.PridejItem(polozka2);
	Oseznam.PridejItem(polozka3);
	Oseznam.PridejItem(polozka4);
	Oseznam.PridejItem(polozka5);
	Oseznam.PridejItem(polozka6);
	

	Oseznam.VypisSeznam();

	printf("SADSASDAD\n");
	Oseznam.GetFirst();
	Oseznam.GetLast();
	return 0;
	}
Nahlásit jako SPAM
IP: 89.102.68.–
Ondrášek
~ Anonymní uživatel
8 příspěvků
7. 11. 2012   #2
-
+1
-
Zajímavé

Vyřešeno, jsem idiot.

Nahlásit jako SPAM
IP: 89.102.68.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 24 hostů

Podobná vlákna

Vázaný seznam — založil Pajda

Vázaný seznam v MCU — založil Pavelv

OS seznam — založil Bengo

C++ Seznam — založil _Daffy_

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý