Professional Documents
Culture Documents
Raport: "Analiza Prelucrării Structurilor de Date Cu Liste "
Raport: "Analiza Prelucrării Structurilor de Date Cu Liste "
Raport
Tema :
“Analiza prelucrării structurilor de date cu liste ”
Chisinău 2018
1
Cuprins:
2
Scopul şi obiectivele:
3
Sarcina:
Scrieţi un program, care din trei liste simplu lănţuite să selecteze într-o
listă nouă mai întîi numerele divizibile la 2, 4 şi 8, apoi numerele
negative impare.
4
Schema bloc:
START
----------------------------
-----
createNode(value,head1);
createNode(value,head2);
createNode(value,head3);
print(head1,head2,head3);
Numerele divizibile la 2 , 4 si 8:
divizibil(head1,head2,head3);
ImparNegativ(head1,head2);
ImparNegativ(head3);
STOP
5
createNode
Node *newNode;
newNode==NULL
newNode->data=value;
return(head);
newNode->next=head;
newNode->next=head;
return(newNode);
STOP
ImparNegativ
Node* aux;
aux=head;
aux!=NULL
aux->data%2!=0&&
aux->data<0
aux->data
aux=aux->next;
STOP 6
print
Node* temp;
head==NULL
temp=head;
temp==NULL
temp->data
temp=temp->next;
STOP
7
Concluzii:
In cadrul acestei lucrari de laborator am facut cunostinta cu stucturile de date de
tip lista si alte structuri de date precum stiva si coada. Am analizat principiul de
formarea a listei,parcurgerea ei,inserarea unui element,stergerea. M-am convins de
eficacitatea listelor prin faptul ca putem adauga un nou nod in lista sau putem
sterge orice nod fie de la inceput, de la sfarsit sau din interiorul listei.
8
Bibliografie:
.
1."Limbajul de programare C". Brian W.Kernighan. Dennis M.Ritchie.
2."C. Tehnici de programare". Florin Munteanu, Gheroghe Musca, Florin Moraru.
3."Arta programarii calculatoarelor". Donald Cnut.
4. Tudor Sorin, Tehnici de programare, 1997.
9
Anexa A
Executia programului :
10
Anexa B:
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
}Node;
if (newNode==NULL)
return(head);
else {
newNode->data=value;
newNode->next=head;
return(newNode);
}
}
void print( Node *head) {
Node* temp;
if(head==NULL)
printf("Lista goala");
else { temp=head;
printf(" \nElementele listei:",temp->data);
while(temp){
printf(" %d ",temp->data);
11
temp=temp->next;
}
}}
printf(" %d ",aux->data);
aux=aux->next;}}
void ImparNegativ(Node *head) {
Node* aux;
aux=head;
while(aux) {
if (aux->data%2!=0 && aux->data<0 )
printf(" %d ",aux->data);
aux=aux->next;}}
int main () {
struct Node *head1=NULL;
struct Node *head2=NULL;
struct Node *head3=NULL;
printf("\n-----------------------------------------------------");
head1=createNode(-3,head1);
head1=createNode(6,head1);
head1=createNode(9,head1);
head1=createNode(12,head1);
head1=createNode(120,head1);
12
head2=createNode(160,head2);
head2=createNode(63,head2);
head2=createNode(54,head2);
head2=createNode(-45,head2);
head2=createNode(-23,head2);
head3=createNode(-67,head3);
head3=createNode(65,head3);
head3=createNode(-9,head3);
head3=createNode(64,head3);
head3=createNode(144,head3);
print(head1);
print(head2);
print(head3);
printf("\n-----------------------------------------------------");
printf("\nNumerele divizibile la 2 , 4 si 8:\n") ;
divizibil(head1);
divizibil(head2);
divizibil(head3);
printf("\n-----------------------------------------------------");
printf("\nNumerele negative impare:\n");
ImparNegativ(head1);
ImparNegativ(head2);
ImparNegativ(head3);
printf("\n-----------------------------------------------------");}
13