Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
O smecherie pe care nu o inteleg

Balcon parter fara acte

unde gasesc un speed bag in bucur...

Programe TV cu altfel de sporturi
 Laptop "bun la toate" max...

navigatie noua vw tiguan

ctfmon.exe - System Error (in Saf...

Ați prins vremurile cand 120 Volț...
 Whatsapp nu afișeaza numele ...

Medii admitere Politehnica Bucure...

Se extinde Baza de la Kogalniceanu

Politist mutilat de caine in curt...
 Trotineta- cat rezista?

Windows 11 si inregistrare de pe ...

Cont Facebook spart

Accesare Plex prin webstation
 

Nu inteleg listele

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

#1
AdrianUrsaciuc

AdrianUrsaciuc

    Junior Member

  • Grup: Members
  • Posts: 161
  • Înscris: 02.04.2014
Cum spune si titlul nu prea inteleg listele, bine in mare le-am inteles cum ar fi citirea, afisarea, dar nu inteleg cum se face eliminarea ultimului nod.

Ce inseamna lista[lista[p].urm].urm ?

#include <iostream>
using namespace std;
struct nod
{
	int val;
	int urm;
};
int main()
{
	int nr_max=100;
	int liber[nr_max];
	int ultim=NULL;
	int prim=NULL;
	int nr_el=0;
	int p,n;
	nod lista[nr_max];
	cout<<"n= ";
	cin>>n;
	cout<<endl;

//initializarea listei
	for(int i=1;i<=nr_max;i++)
	{
		liber[i]=1;
	}
	for(int i=1;i<n+1;i++)
	{
//citirea primului element din lista
		if(nr_el==0)
		{
			liber[i]=0;
			prim=ultim=i;
			cout<<"val= ";
			cin>>lista[i].val;
			lista[i].urm=NULL;
			nr_el++;
			ultim=i;
		}
//citirea listei
		else
		{
			liber[i]=0;
			lista[p].urm=i;
			cout<<"val= ";
			cin>>lista[i].val;
			lista[i].urm=NULL;
			nr_el++;
			ultim=i;
		}
		p=i;
	}

//Eliminarea ultimului nod
	for(p=prim;lista[lista[p].urm].urm!=NULL;p=lista[p].urm);
	liber[lista[p].urm]=1; 
	nr_el--;
	lista[p].urm=NULL;
	ultim=lista[prim].urm;

	cout<<endl;

//parcurgerea si afisarea listei
	p=prim;
	while(p!=NULL)
	{
		cout<<lista[p].val<<endl;
		p=lista[p].urm;
	}

	return 0;
}



#2
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Eliminarea ultimului nod e la fel ca eliminarea oricărui alt nod, doar că execuți mai puține operații: doar pui penultimul nod să pointeze către NULL.

Bineînțeles, și eliberezi memoria, dacă ai alocat-o pe heap.

Ce ai tu acolo nu e o listă înlănțuită. Tipul de date al următorului nod trebuie să fie un pointer către nod.

#3
AdrianUrsaciuc

AdrianUrsaciuc

    Junior Member

  • Grup: Members
  • Posts: 161
  • Înscris: 02.04.2014

View PostOriginalCopy, on 27 aprilie 2015 - 17:09, said:

Eliminarea ultimului nod e la fel ca eliminarea oricărui alt nod, doar că execuți mai puține operații: doar pui penultimul nod să pointeze către NULL.

Bineînțeles, și eliberezi memoria, dacă ai alocat-o pe heap.

Ce ai tu acolo nu e o listă înlănțuită. Tipul de date al următorului nod trebuie să fie un pointer către nod.
Eu inca nu am ajuns la lista dinamica cu poinetri aia o fac in a 11-a

#4
sergiu_spooky

sergiu_spooky

    Senior Member

  • Grup: Senior Members
  • Posts: 3,738
  • Înscris: 23.06.2006
Ce anume nu intelegi? Citeste codul.
nod - o pereche de doua numere intregi
lista - o lista de elemente in care fiecare element are o "adresa" - un numar intreg intre 0 si nr_max
lista[x] - elementul cu "adresa" x din lista
Tot ce urmeaza tine strict de interpretarea ta, ca programator, a datelor.
Din moment ce adresele din lista si perechea din nod sunt numere intregi inseamna ca intr-un nod poti memora, pe langa o valoare, si "adresa" unui alt nod.

nod.val - valoarea "utila" stocata de nod
nod.urm - adresa unui alt nod

De aici ar trebui sa fie simplu. lista[lista[p].urm].urm se "citeste" asa: Adresa (nu nodul!) "urmatoare" nodului de la adresa urmatoare a nodului de la adresa p din lista.

#5
AdrianUrsaciuc

AdrianUrsaciuc

    Junior Member

  • Grup: Members
  • Posts: 161
  • Înscris: 02.04.2014
Si
int este_vida=(prim==NULL);

ce inseamna?cu ce o pot inlocui?

#6
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,558
  • Înscris: 30.07.2003
int este_vida;
if(prim == NULL)
{
  este_vida = 1;
}
else
{
  este_vida = 0;
}


Edited by neagu_laurentiu, 27 April 2015 - 17:57.


Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

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