Sunteți pe pagina 1din 3

// liste.cpp : main project file.

#include "stdafx.h"
#include <iostream>
using namespace System;
using namespace std;

// definire structura de date ce va fi implementata
// ca nod al listei

struct student
{
unsigned nrmat;
char nume[20];
char facult[20];
float media;

};

struct nod_lista
{
student s;
nod_lista *next;
};

nod_lista * adaug_inceput (nod_lista * lis,student stud)
{
nod_lista * nou= new nod_lista; //aloc memorie dinamic


strcpy_s(nou->s.nume,10,stud.nume);
strcpy_s(nou->s.facult,10,stud.facult);
nou->s.nrmat = stud.nrmat ;
nou->s.media = stud.media;

nou->next = lis;

return nou;
}

nod_lista * adaug_sfarsit (nod_lista * nod, student stud)
{
nod_lista *nou,*curent;
nou = new nod_lista;
// atribuiri valori elementului din lista

strcpy_s(nou->s.nume,10,stud.nume);
strcpy_s(nou->s.facult,10,stud.facult);
nou->s.nrmat = stud.nrmat ;
nou->s.media = stud.media;
curent = nod;

if(nod == NULL)
{
nou->next = NULL;
return nou;

}
// ne deplasam pe ultima pozitie a liste pt a insera
while (curent->next != NULL)
{
curent = curent->next;
}
nou->next = curent->next; // nou->next = NULL
curent->next= nou;
return nod;//pointer la inceputul listei

}

void print_lista(nod_lista *nod)
{
cout<<"Valorile sunt: "<<endl;
while(nod!=NULL)
{
cout<<nod->s.nume <<"\t"<<nod->s.nrmat<<"\t"<<nod->s.facult<<nod-
>s.media<<endl;
nod=nod->next;

}
}


nod_lista * stergere_inceput(nod_lista * nod)
{
nod_lista * de_sters;
if (nod==NULL) // dc lista e goala intorc null
return NULL;
de_sters= nod; //setez valoarea de sters
nod=nod->next; //modific inceputul
free(de_sters);// sterg valoarea
return nod; // intorc noul inceput

}
nod_lista * stergere_sfarsit(nod_lista * nod)
{

nod_lista * de_sters, *curent;
if((nod==NULL)||(nod->next==NULL)) return NULL;
curent = nod;
// Ne deplasam pana la penultima pozitie
while(curent->next->next != NULL)
{
curent = curent->next;
}

de_sters= curent->next; //marchez pt stergere ultiumul element
// eu deja sunt pe penultimul
curent->next = NULL; //pointez catre null de pe elementul penultim
free(de_sters); //sterg elementul ultim

return nod;

}


int main(array<System::String ^> ^args)
{

student z;
strcpy_s(z.facult,10,"St");
z.media =9.64;
z.nrmat =1;
strcpy_s(z.nume ,"Popescu");




nod_lista *nod = new nod_lista;
nod= NULL;
nod = adaug_inceput(nod,z);
cout<<nod->s.nume<<"\t";
cout<<nod->s.media<<endl;

student z1;
cout<<"Introduceti elem sau ctrl+z: ";
cout<<endl;
while (!feof(stdin))
{
cout<<"Nume stud: "; cin>>z1.nume;cout<<endl;
cout<<"Nr matricol: ";cin>>z1.nrmat;
cout<<"Media: "; cin >>z1.media;
cout<<"Facultate: ";cin>>z1.facult ;
nod = adaug_sfarsit(nod,z1);

}
print_lista(nod);
nod = stergere_inceput(nod);
print_lista(nod);
nod = stergere_sfarsit(nod);
print_lista(nod);

return 0;
}

S-ar putea să vă placă și