Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Presbiopia - la 43 ani ?

Termen transcriere autovehicul

Cazare Timisoara pe 4-5 zile

Primele zile ale internetului per...
 Ditra 25

Casti USB-C ptr A-54

Aplicatie medicala / asistent med...

De ce vor atația politicieni...
 ERR_ADDRESS_UNREACHABLE

Legea 18/1968 Se mai aplica?

Digi conectare 2 routere prin fir

Succesiune notar versus instanta ...
 Montaj aer conditionat in balcon ...

Cont curent mulți valuta far...

Sugestii plan casa

Experiente cu firme care cumpara ...
 

[TEMA] Liste dublu înlănțuite, înserare pe o anumită pozitie.

- - - - -
  • Please log in to reply
4 replies to this topic

#1
worm94

worm94

    Member

  • Grup: Members
  • Posts: 266
  • Înscris: 02.01.2015
Salut, am codul următor care face înserarea într-o listă dublu înlănțuită pe o anumită poziție.

void inserare_pozitie_ceruta(Lista &cap, int poz, int val) {
if (poz < 0) {
cout << "Pozitie < 0";
} else {
Lista p = creazaNod(val);
if (poz == 1) {
p->succ = cap;
cap = p;
} else {
Lista q = cap;
for (int i = 2; i < poz; i++)
q = q->succ;
if (q == 0) {
cout << "Lista prea scurtă. ";

} else {
if (q->succ == 0) {
	 p->pred = q;
	 q->succ = p;
} else {
	 p->succ = q->succ;
	 p->pred = p->succ->pred;
	 q->succ = p;
	 p->succ->pred = p;
}
}
}
}
}


Am o oarecare problmă în a înțelege când se face referire la un element din lista (trecut sau următor) și atunci când se face referire la adresa dintr-un element.
Nu știu cât de clar am fost dar de exemplu, luând parte unde se face înserarea pe o poziție diferita fața de prima și ultima.

	 p->succ = q->succ;
	 p->pred = p->succ->pred;
	 q->succ = p;
	 p->succ->pred = p;


Am pus și o mică poză.

Edited by worm94, 27 February 2015 - 18:48.


#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,233
  • Înscris: 24.02.2007
Folosind p, q si alte litere din alfabet fara nici o semnificatie, cam greu de inteles.

Atunci cand vrei sa introduci nodul NOU intre STANG si DREPT se intampla urmatoarele:
  • Succesorul lui NOU va deveni DREPT (ce era inainte succesorul lui STANG)
  • Precedentul lui NOU va deveni STANG (ce era inainte precedentul lui DREPT)
  • Succesorul lui STANG va deveni NOU
  • Precedentul lui DREPT va deveni tot NOU


#3
worm94

worm94

    Member

  • Grup: Members
  • Posts: 266
  • Înscris: 02.01.2015
Eu nu înțeleg...când se referă la adresă și cand se referă la tot elementul (la adresa de început a elementului repectiv.
  p->pred = p->succ->pred;

Cine o să fie p->precedent?
Din elementul p o să se modifice nodul care retine adresa spre elementul precedent sau o să facă referire chiar la elementul precedent al lui p, gen p-1..

#4
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,233
  • Înscris: 24.02.2007
pred, succ sunt adrese, pointeri.
Nici nu se poate altfel, nu poti stoca o structura in ea insasi direct.

#5
worm94

worm94

    Member

  • Grup: Members
  • Posts: 266
  • Înscris: 02.01.2015
Te mai chinui cu o singură imagine, sper să ai răbdare cu mine..:D

http://s18.postimg.o...thdmh/liste.png

Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate