Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
zamfiroiu committed Mar 16, 2018
1 parent a9a993c commit 5cca118
Show file tree
Hide file tree
Showing 2 changed files with 358 additions and 0 deletions.
192 changes: 192 additions & 0 deletions 1048_seminar4.cpp
@@ -0,0 +1,192 @@
#include<iostream>

struct Avion {
char* model;
int anFabricatie;
};

struct nodSimplu {
Avion info;
nodSimplu*next;
};

struct nodDublu {
Avion info;
nodDublu*next;
nodDublu*prev;
};

struct LDI {
nodDublu*prim;
nodDublu*ult;
};


Avion creareAvion(char*model, int an) {
Avion avion;
avion.model = (char*)malloc(sizeof(char)*(strlen(model) + 1));
strcpy_s(avion.model, strlen(model) + 1, model);
avion.anFabricatie = an;
return avion;
}

nodDublu* creareNod(Avion info, nodDublu*next, nodDublu*prev) {
nodDublu* nodNou = (nodDublu*)malloc(sizeof(nodDublu));
nodNou->info = creareAvion(info.model, info.anFabricatie);
nodNou->next = next;
nodNou->prev = prev;
return nodNou;
}

nodSimplu* creareNod(Avion info, nodSimplu*next) {
nodSimplu*nodNou = (nodSimplu*)malloc(sizeof(nodSimplu));
nodNou->info = creareAvion(info.model, info.anFabricatie);
nodNou->next = next;
return nodNou;
}

nodSimplu*inserareSfarsit(nodSimplu* cap, Avion info) {
if (cap) {
nodSimplu*p = cap;
while (p->next) {
p = p->next;
}
nodSimplu* nodNou = creareNod(info, NULL);
p->next = nodNou;
return cap;
}
else {
return creareNod(info, NULL);
}
}

LDI inserareInceput(Avion info, LDI lista) {
nodDublu* nodNou = creareNod(info, lista.prim, NULL);
if (lista.prim) {
lista.prim->prev = nodNou;
lista.prim = nodNou;
}
else {
lista.prim = nodNou;
lista.ult = nodNou;
}
return lista;
}


LDI inserareSfarsit(Avion info, LDI lista) {
nodDublu* nodNou = creareNod(info,NULL,lista.ult);
if (lista.ult) {
lista.ult->next = nodNou;
lista.ult = nodNou;
}
else {
lista.prim = nodNou;
lista.ult = nodNou;
}
return lista;
}

void afisareAvion(Avion a) {
printf("Avionul %s a fost fabricat in anul %d\n", a.model, a.anFabricatie);
}

void afisareDeLaInceput(LDI lista) {
while (lista.prim) {
afisareAvion(lista.prim->info);
lista.prim = lista.prim->next;
}
}

void afisareDeLaSfarsit(LDI lista) {
while (lista.ult) {
afisareAvion(lista.ult->info);
lista.ult = lista.ult->prev;
}
}

LDI stergereLista(LDI lista) {
while (lista.prim) {
free(lista.prim->info.model);
nodDublu*aux = lista.prim;
lista.prim = lista.prim->next;
free(aux);
}
lista.ult = NULL;
return lista;
}

LDI inserarePePozitie(Avion info, LDI lista, int pozitie) {
if (lista.prim) {
nodDublu*p = lista.prim;
while (p && pozitie > 1) {
p = p->next;
pozitie--;
}
if (p) {
nodDublu*nodNou = creareNod(info, p, p->prev);
p->prev = nodNou;
if (nodNou->prev) {
nodNou->prev->next = nodNou;
}
else {
lista.prim = nodNou;
}
}
else {
//lista = inserareSfarsit(info, lista);
nodDublu*nodNou = creareNod(info, NULL, lista.ult);

lista.ult->next = nodNou;
lista.ult = nodNou;
}
}
else
{
nodDublu*nodNou = creareNod(info, NULL, NULL);
lista.prim = lista.ult = nodNou;
}
return lista;
}

nodSimplu* filtrareAvioane(LDI lista, int anLimita) {
nodSimplu*cap = NULL;
if (lista.prim) {
nodDublu* p = lista.prim;
while (p) {
if (p->info.anFabricatie >= anLimita) {
cap = inserareSfarsit(cap, p->info);
}
p = p->next;
}
}

return cap;
}

void main() {
LDI lista;
lista.prim = NULL;
lista.ult = NULL;

lista = inserarePePozitie(creareAvion("B535", 2008), lista,1);
lista = inserarePePozitie(creareAvion("B424", 2010), lista,1);
lista = inserarePePozitie(creareAvion("B373", 2016), lista,2);

afisareDeLaInceput(lista);


nodSimplu* cap = filtrareAvioane(lista, 2011);

printf("\n\n");
while (cap) {
afisareAvion(cap->info);

nodSimplu*temp = cap;
cap = cap->next;
free(temp->info.model);
free(temp);
}

lista = stergereLista(lista);
}
166 changes: 166 additions & 0 deletions Restante_Seminar4.cpp
@@ -0,0 +1,166 @@
#include<iostream>

struct test{
char* materie;
float notaMaxima;
};
struct nodSimplu{
test info;
nodSimplu* next;
};

struct nodDublu{
test info;
nodDublu* next;
nodDublu* prev;
};

struct LDI{
nodDublu* prim;
nodDublu* ult;
};

test creareTest(char*materie, float nota){
test t;
t.materie = (char*)malloc(sizeof(char)*(strlen(materie) + 1));
strcpy(t.materie, materie);
t.notaMaxima = nota;
return t;
}

nodDublu* creareNodDublu(test info, nodDublu* next, nodDublu* prev){
nodDublu* nodNou = (nodDublu*)malloc(sizeof(nodDublu));
nodNou->info = creareTest(info.materie,info.notaMaxima);
nodNou->next = next;
nodNou->prev = prev;
return nodNou;
}

LDI inserareInceput(LDI lista, test info){
nodDublu* nodNou = creareNodDublu(info, lista.prim, NULL);
if (lista.prim){
lista.prim->prev = nodNou;
lista.prim = nodNou;
}
else{
lista.prim = nodNou;
lista.ult = nodNou;
}
return lista;
}

LDI inserareSfarsit(LDI lista, test info){
nodDublu* nodNou = creareNodDublu(info, NULL, lista.ult);
if (lista.ult){
lista.ult->next = nodNou;
lista.ult = nodNou;
}
else{
lista.prim = nodNou;
lista.ult = nodNou;
}
return lista;
}

void afisareTest(test t){
printf("Testul la materia %s are nota maxima %5.2f\n", t.materie, t.notaMaxima);
}
void afisareCapCoada(LDI lista){
nodDublu* p = lista.prim;
while (p){
afisareTest(p->info);
p = p->next;
}
}

void afisareCoadaCap(LDI lista){
nodDublu* p = lista.ult;
while (p){
afisareTest(p->info);
p = p->prev;
}
}

void stergereLista(LDI* lista){
while (lista->prim)
{
nodDublu* aux = lista->prim;
lista->prim = lista->prim->next;
free(aux->info.materie);
free(aux);
}
lista->ult = NULL;
}

LDI inserarePePozitie(LDI lista, test info, int pozitie){
if (lista.prim){
int k = 1;
nodDublu*p = lista.prim;
while (p && k < pozitie){
p = p->next;
k++;
}
if (p){
nodDublu* nodNou = creareNodDublu(info, p, p->prev);
p->prev = nodNou;
if (nodNou->prev){
nodNou->prev->next = nodNou;
}
else{
lista.prim = nodNou;
}
}
else{
lista = inserareSfarsit(lista, info);
}
}
else{
lista = inserareSfarsit(lista, info);
}

return lista;
}

nodSimplu* inserareInceput(nodSimplu* cap, test info){
nodSimplu*nodNou = (nodSimplu*)malloc(sizeof(nodSimplu));
nodNou->info = creareTest(info.materie, info.notaMaxima);
nodNou->next = cap;
return nodNou;
}

nodSimplu* ExtragereTeste(LDI lista, char* materieLimita){
nodSimplu*cap = NULL;
while (lista.prim){
if (stricmp(lista.prim->info.materie, materieLimita) <= 0){
cap = inserareInceput(cap, lista.prim->info);
}
lista.prim = lista.prim->next;
}
return cap;
}

void main(){
LDI lista;
lista.prim = lista.ult = NULL;

lista = inserarePePozitie(lista, creareTest("Structuri", 10),1);
lista = inserarePePozitie(lista, creareTest("Statistica", 11),4);
lista = inserarePePozitie(lista, creareTest("Java", 9),3);

afisareCapCoada(lista);

nodSimplu* cap = ExtragereTeste(lista, "Statistica");

printf("\n");

while (cap){
afisareTest(cap->info);
nodSimplu* aux = cap;
cap = cap->next;
free(aux->info.materie);
free(aux);
}


stergereLista(&lista);
}

0 comments on commit 5cca118

Please sign in to comment.