Académique Documents
Professionnel Documents
Culture Documents
SDD2
SDD2
//program care realizeaza o lista simplu inlantuita ale carei noduri sunt campurile
Cod, Cantitate,Pret si Valorea(pret*cantitate)
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
struct nod
{
float cod, cant, pret;
next este pointerul care retine
struct nod* next;
}; adresa unei structuri de tip nod
int main(void)
{
nod *cap;
int n;
printf("Numar produse=");
scanf("%d", &n);
crearelista(&cap, n);
traversare(cap);
_getch();
return 0;
}
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
}
}
_getch();
}
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
struct produs
{
int cod;
float cantitate;
float pret;
};
struct nod
{
produs inf;
struct nod* next;
};
void main()
{
nod *cap = NULL;
int n;
printf("Numar produse=");
scanf("%d", &n);
cap = crearelista(cap, n);
traversare(cap);
_getch();
}
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
//nod
struct nod
{
student info;
struct nod *next;
};
//creare lista
nod* crearelista(nod *cap, int n)
{
nod *p, *q;
cap = (nod*)malloc(sizeof(nod));
printf("Cod_student=");
scanf("%d", &cap->info.Cod_student);
printf("Nota_romana=");
scanf("%f", &cap->info.Nota_romana);
printf("Nota_mate=");
scanf("%f", &cap->info.Nota_mate);
printf("Nota_fizica=");
scanf("%f", &cap->info.Nota_fizica);
cap->next = NULL;
p = cap;
for (int i = 1; i < n; i++)
{
q = (nod*)malloc(sizeof(nod));
printf("Cod_student=");
scanf("%d", &q->info.Cod_student);
printf("Nota_romana=");
scanf("%f", &q->info.Nota_romana);
printf("Nota_mate=");
scanf("%f", &q->info.Nota_mate);
printf("Nota_fizica=");
scanf("%f", &q->info.Nota_fizica);
q->next = NULL;
p->next = q;
p = q;
}
return cap;
void main()
{
int n;
nod *cap=NULL;
printf("Introduceti numarul de studenti=");
scanf("%d", &n);
cap = crearelista(cap, n);
traversare(cap);
_getch();
}
//program care calculeaza valoarea pt fiecare produs si valoarea totala, iar articolul are campurile
cod, denumire, cantitate si pret.(lista simplu inlantuita)
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<string.h>
struct produs
{
int cod;
char *denumire;
float cantitate;
float pret;
};
struct nod
{
produs inf;
struct nod* next;
};
void main()
{
nod *cap=NULL;
int n;
printf("Numar produse=");
scanf("%d",&n);
cap=crearelista(cap,n);
traversare(cap);
getch();
}
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<malloc.h>
struct nod
{
student info;
struct nod *next;
};
//creare lista
nod* crearelista(nod *cap, int n)
{
nod *p, *q;
char buffer[25];
cap = (nod*)malloc(sizeof(nod));
printf("Cod_student=");
scanf("%d", &cap->info.Cod_student);
printf("Nume_student=");
scanf("%s", buffer);
cap->info.Nume_student = (char*)malloc((strlen(buffer) + 1)*sizeof(char));
strcpy(cap->info.Nume_student, buffer);
printf("Nota_romana=");
scanf("%f", &cap->info.Nota_romana);
printf("Nota_mate=");
scanf("%f", &cap->info.Nota_mate);
printf("Nota_fizica=");
scanf("%f", &cap->info.Nota_fizica);
cap->next = NULL;
p = cap;
for (int i = 1; i < n; i++)
{
q = (nod*)malloc(sizeof(nod));
printf("Cod_student=");
scanf("%d", &q->info.Cod_student);
printf("Nume_student=");
scanf("%s", buffer);
q->info.Nume_student = (char*)malloc((strlen(buffer) + 1)*sizeof(char));
strcpy(q->info.Nume_student, buffer);
printf("Nota_romana=");
scanf("%f", &q->info.Nota_romana);
printf("Nota_mate=");
scanf("%f", &q->info.Nota_mate);
printf("Nota_fizica=");
scanf("%f", &q->info.Nota_fizica);
q->next = NULL;
p->next = q;
p = q;
}
return cap;
void main()
{
nod *cap=NULL;
int n;
printf("Introduceti numarul de studenti=");
scanf("%d", &n);
cap = crearelista(cap, n);
traversare(cap);
_getch();
}
//lista simplu inlantuita care are campurile cod, denumire, cantitate, pret. In aceasta lista simplu
inlantuita se adauga un nod nou si se afiseaza din nou lista
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<string.h>
struct produs
{
int cod;
char *denumire;
float cantitate;
float pret;
};
struct nod
{
produs inf;
struct nod* next;
};
//inseram noul nod la sfarsitul listei, vom avea doua capete pt lista, p copiind
adresa la care se afla lista si fiind temporar, pentru ca el va lua pe rand adresa
fiecarui nod pana se va pozitiona pe ultimul nod din lista, dupa care se va face
legatura intre ultimul nod al listei si nodul nou inserat.
void inserare(nod *cap, produs prod)
{
nod *p;
nod *q = (nod*)malloc(sizeof(nod));
//q->inf.cod=prod.cod;
//q->inf.denumire=prod.denumire;
//q->inf.cantitate=prod.cantitate;
//q->inf.pret=prod.pret;
q->inf = prod;
q->next = NULL;
for (p = cap; p->next; p = p->next);
p->next = q;
}
void main()
{
nod *cap = NULL;
int n;
printf("Numar produse=");
scanf("%d", &n);
cap = crearelista(cap, n);
traversare(cap);
//inseram un nou produs, introducand valori de la tastatura pentru fiecare camp
produs pnou;
char buffer[20];
printf("\nCodul nou=");
scanf("%d", &pnou.cod);
printf("Denumirea noua=");
scanf("%s", buffer);
pnou.denumire = (char*)malloc(strlen(buffer)+1)*sizeof(char));
strcpy(pnou.denumire, buffer);
printf("Cantitatea noua=");
scanf("%f", &pnou.cantitate);
printf("Pretul nou=");
scanf("%f", &pnou.pret);
inserare(cap, pnou);
traversare(cap);
_getch();
}
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<string.h>
struct produs
{
int cod;
char *denumire;
float cantitate;
float pret;
};
struct nod
{
produs inf;
struct nod* next;
};
void main()
{
nod *cap = NULL;
int n;
printf("Numar produse=");
scanf("%d", &n);
cap = crearelista(cap, n);
traversare(cap);
//inseram un nou produs, introducand valori de la tastatura pentru fiecare camp
produs pnou;
char buffer[20];
printf("\nCodul nou=");
scanf("%d", &pnou.cod);
printf("Denumirea noua=");
scanf("%s", buffer);
pnou.denumire = (char*)malloc(strlen(buffer)+1)*sizeof(char));
strcpy(pnou.denumire, buffer);
printf("Cantitatea noua=");
scanf("%f", &pnou.cantitate);
printf("Pretul nou=");
scanf("%f", &pnou.pret);
cap=inserare(cap, pnou);
traversare(cap);
_getch();
}
Inserati un nod nou dupa primul element dintr-o lista simpla inlantuita.
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<string.h>
using namespace std;
struct produs
{
int cod;
char *denumire;
float cantitate;
float pret;
};
struct nod
{
produs inf;
struct nod* next;
};
return spec;
}
pt n=2(noduri)
cap
inf1 inf2
next next
NULL
----------------------------------------------------------------
cap spec
inf1 inf2
----------------------------------------------------------------
inf2
inf3
next
next NULL
----------------------------------------------------
spec cap
q
void main()
{
nod *cap = NULL;
nod *spec = NULL;
int n;
printf("Numar produse=");
scanf("%d", &n);
cap = crearelista(cap, n);
traversare(cap);
//inseram un nou produs, introducand valori de la tastatura pentru fiecare camp
produs pnou;
char buffer[20];
printf("\nCodul nou=");
scanf("%d", &pnou.cod);
printf("Denumirea noua=");
scanf("%s", buffer);
pnou.denumire = (char*)malloc(strlen(buffer)+1)*sizeof(char));
strcpy(pnou.denumire, buffer);
printf("Cantitatea noua=");
scanf("%f", &pnou.cantitate);
printf("Pretul nou=");
scanf("%f", &pnou.pret);
spec= inserare(cap, pnou);
printf("gata");
traversare(cap);
_getch();
}
1.Creati o lista dublu inlantuita care sa aiba noduri in care informatia contine: cod, denumire,
cantitate, pret.
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<string.h>
//cream o structura pt informatia pe care vrem sa o punem in fiecare nod din lista
struct produs
{
int cod;
char *denumire;
float cantitate;
float pret;
};
//cream lista dublu inlantuita, cap va retine adresa intregii liste, il folosim pentru
a gasi lista
}
void main()
{
nod *cap = NULL;
int n;
printf("Introduceti nr de produse=");
scanf("%d", &n);
cap = crearelista(cap, n);
traversare(cap);
_getch();
}
Creati o lista dublu inlantuita in care sa inserati valorile introduse de la tastatura
in structura care este de fapt informatia nodului din lista. Lista avand informatia
:cod, cantitate, pret, denumire.
inf ------------------
cod
denumire
cantitate
pret
nou cap
prod <---------------------------------------------------------------------------------
prev
next NULL
-il facem pe nou primul nod
nou
prod
prev
NULL
next NULL
nou
cap p
prod
prev
prev
next
next
se plaseaza pe
urmatorul nod
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<string.h>
//cream o structura care sa aiba cod, denumire, cantitate, pret, aceasta structura va
fi informatia din nodul nostru
struct produs
{
int cod;
char *denumire;
float cant;
float pret;
};
//facem un nod care are informatia de tipul structurii produs
struct nod
{
produs pr;
struct nod *prev, *next;
};
void main()
{
nod *cap = NULL;
int n;
char buffer[20];
produs inf;
printf("Numar produse=");
scanf("%d", &n);
//introducem valorile pt structura inf
for (int i = 0; i<n; i++)
{
printf("Codul=");
scanf("%d", &inf.cod);
printf("Denumirea=");
scanf("%s", buffer);
inf.denumire = (char*)malloc((strlen(buffer) + 1)*sizeof(char));
strcpy(inf.denumire, buffer);
printf("Cantitatea=");
scanf("%f", &inf.cant);
printf("Pretul=");
scanf("%f", &inf.pret);
//inseram informatia care contine valorile pt cod, denumire, pret,
cantitate intr-o lista dublu inlantuita
cap = inserare(cap, inf);
}
traversare(cap);
_getch();
}
Scrieti un program care creeaza o lista dublu inlantuita in care informatia contine campurile :
cod, denumire, cantitate, pret in cate un vector (int *, char *, float *, float *).
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<string.h>
struct produs
{
int *cod;
char *denumire;
float *cant;
float *pret;
};
struct nod
{
produs pr;
struct nod *prev, *next;
};
void main()
{
nod *cap = NULL;
int n;
char buffer[20];
produs inf;
printf("Numar produse=");
scanf("%d", &n);
for (int i = 0; i<n; i++)
{
printf("Codul=");
inf.cod = (int*)malloc(sizeof(int));
scanf("%d", inf.cod);
printf("Denumirea=");
scanf("%s", buffer);
inf.denumire = (char*)malloc((strlen(buffer) + 1)*sizeof(char));
strcpy(inf.denumire, buffer);
printf("Cantitatea=");
inf.cant = (float*)malloc(sizeof(float));
scanf("%f", inf.cant);
printf("Pretul=");
inf.pret = (float*)malloc(sizeof(float));
scanf("%f", inf.pret);
cap = inserare(cap, inf);
}
traversare(cap);
_getch();
}
struct produs
{
int *cod;
char *denumire;
float *cant;
float *pret;
};
struct nod
{
produs pr;
struct nod *prev, *next;
};
void main()
{
nod* cap = NULL;
produs *v;
int i, n;
char buffer[20];
printf("Nr. de elemente ale vectorului=");
scanf("%d", &n);
v = (produs*)malloc(n*sizeof(produs));
for (i = 0; i<n; i++)
{
printf("Codul=");
v[i].cod = (int*)malloc(sizeof(int));
scanf("%d", v[i].cod);
printf("Denumirea=");
scanf("%s", buffer);
v[i].denumire = (char*)malloc((strlen(buffer) + 1)*sizeof(char));
strcpy(v[i].denumire, buffer);
printf("Cantitatea=");
v[i].cant = (float*)malloc(sizeof(float));
scanf("%f", v[i].cant);
printf("Pretul=");
v[i].pret = (float*)malloc(sizeof(float));
scanf("%f", v[i].pret);
}
//dezalocare memorie
for (i = 0; i<n; i++)
{
free(v[i].cod);
free(v[i].denumire);
free(v[i].cant);
free(v[i].pret);
}
free(v);
_getch();
}
produs
pointer 4
pointer2 pointer3
pointer1
cap
pr
prev
next
v[0] v[1]
v[0].cod v[0].denumire
v[0].cant v[0].pret
nou cap
p
cap=nou
p=cap
nou
v[1]
prev
next NULL
cap p
v[0] v[1]
prev prev
NULL
next next
NULL
//alta metoda de a face o lista dublu inlantuita sub forma unei matrici si folosind conversia
dupa
i
a[0][0].cod a[0][1].denumire a[0][2].cant a[0][3].pret
pointer care
retine adresa
matricii (a)
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<string.h>
struct produs
{
int *cod;
char *denumire;
float *cant;
float *pret;
};
struct nod
{
produs pr;
struct nod *prev, *next;
};
void main()
{
nod* cap = NULL;
produs **a;
int n, m, i, j;
char buffer[20];
printf("\nNr. linii=");
scanf("%d", &n);
printf("\nNr. coloane=");
scanf("%d", &m);
a = (produs**)malloc(n*sizeof(produs*));
for (i = 0; i<n; i++) a[i] = (produs*)malloc(m*sizeof(produs));
for (i = 0; i<n; i++)
for (j = 0; j<m; j++)
{
printf("Codul=");
a[i][j].cod = (int*)malloc(sizeof(int));
scanf("%d", a[i][j].cod);
printf("Denumirea=");
scanf("%s", buffer);
a[i][j].denumire = (char*)malloc((strlen(buffer) + 1)*sizeof(char));
strcpy(a[i][j].denumire, buffer);
printf("Cantitatea=");
a[i][j].cant = (float*)malloc(sizeof(float));
scanf("%f", a[i][j].cant);
printf("Pretul=");
a[i][j].pret = (float*)malloc(sizeof(float));
scanf("%f", a[i][j].pret);
}
cap = conversie(cap, a, n, m);
traversare(cap);
//dezalocare memorie
for (i = 0; i<n; i++)
{
for (j = 0; j<m; j++)
{
free(a[i][j].cod);
free(a[i][j].denumire);
free(a[i][j].cant);
free(a[i][j].pret);
}
free(a[i]);
}
free(a);
_getch();
}
//alocare si dezalocare
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<string.h>
struct produs
{
int *cod;
char *denumire;
float *cant;
float *pret;
};
struct nod
{
produs pr;
struct nod *prev, *next;
};
void main()
{
nod *cap=NULL;
int n;
char buffer[20];
produs inf;
printf("Numar produse=");
scanf("%d",&n);
for (int i=0;i<n;i++)
{
printf("Codul=");
inf.cod=(int*)malloc(sizeof(int));
scanf("%d",inf.cod);
printf("Denumirea=");
scanf("%s",buffer);
inf.denumire=(char*)malloc((strlen(buffer)+1)*sizeof(char));
strcpy(inf.denumire,buffer);
printf("Cantitatea=");
inf.cant=(float*)malloc(sizeof(float));
scanf("%f",inf.cant);
printf("Pretul=");
inf.pret=(float*)malloc(sizeof(float));
scanf("%f",inf.pret);
cap=inserare(cap,inf);
}
traversare(cap);
getch();
}
Creati o lista dublu inlantuita care are in informatie: cod, denumire, cantitate, pret (vectori)
si insereaza la inceputul listei un nod nou.
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<string.h>
struct produs
{
int *cod;
char *denumire;
float *cant;
float *pret;
};
struct nod
{
produs pr;
struct nod *prev, *next;
};
void main()
{
nod *cap = NULL;
int n;
char buffer[20];
produs inf, k;
printf("Numar produse=");
scanf("%d", &n);
for (int i = 0; i<n; i++)
{
printf("Codul=");
inf.cod = (int*)malloc(sizeof(int));
scanf("%d", inf.cod);
printf("Denumirea=");
scanf("%s", buffer);
inf.denumire = (char*)malloc((strlen(buffer) + 1)*sizeof(char));
strcpy(inf.denumire, buffer);
printf("Cantitatea=");
inf.cant = (float*)malloc(sizeof(float));
scanf("%f", inf.cant);
printf("Pretul=");
inf.pret = (float*)malloc(sizeof(float));
scanf("%f", inf.pret);
cap = inserare(cap, inf);
}
traversare(cap);
printf("\nProdusul de inserat:");
printf("\nCodul=");
k.cod = (int*)malloc(sizeof(int));
scanf("%d", k.cod);
printf("Denumirea=");
scanf("%s", buffer);
k.denumire = (char*)malloc((strlen(buffer) + 1)*sizeof(char));
strcpy(k.denumire, buffer);
printf("Cantitatea=");
k.cant = (float*)malloc(sizeof(float));
scanf("%f", k.cant);
printf("Pretul=");
k.pret = (float*)malloc(sizeof(float));
scanf("%f", k.pret);
cap = inserare_inainte(cap, k);
traversare(cap);
_getch();
}
nou
prod
prev
NULL next
cap
pr1 pr2
NULL prev prev
return nou
next next NULL