Documente Academic
Documente Profesional
Documente Cultură
Varianta 7
Raport
Tema: Liste
Chisinău 2018
Cuprin
2
s
3
1. Scopul și obiectivele lucrării
4
2. Sarcina
7. Scrieţi un program de inversare a cei n biţi ai elementelor unei liste simplu lănţuită, care încep
de la poziţia p, lăsîndu-i pe ceilalţi neschimbaţi şi le salvează în una nouă. Sa se scrie o funcţie
care transforma o lista intr-o multime
5
3. Schema bloc
START
Int n, *a;
insert(1);
insert(0);
insert(1);
printList();
printList();
printList();
Interschimbare();
Transformare();
STOP
6
Figura 1 Schema bloc pentru functia main
7
4. Realizarea
int i=0;
for(i=0;i<n;i++)
ptr=ptr->next;
while(ptr!=NULL)
if(ptr->data==1) {ptr->data=0;}
else
if(ptr->data==0) {ptr->data=1;}
ptr=ptr->next;
8
Concluzii
9
Bibliografie
10
Anexa A
11
Anexa B
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node *next;
};
void printList() {
printf("\n[head] =>");
for(ptr=head;ptr!=NULL;ptr=ptr->next)
printf(" %d =>",ptr->data);
printf(" [null]\n");
}
void interschimbare(int n)
{
int i=0;
12
struct node *ptr=head;
for(i=0;i<n;i++)
ptr=ptr->next;
while(ptr!=NULL)
{
if(ptr->data==1) {ptr->data=0;}
else
if(ptr->data==0) {ptr->data=1;}
ptr=ptr->next;
}
}
void transformare()
{
struct node *ptr=head;
int i=0,*a;
a=calloc(count(),sizeof(int*));
while(ptr!=NULL)
{
a[i]=ptr->data;
ptr=ptr->next;
i++;
}
for(i=0;i<count();i++)
printf("%d ",a[i]);
free(a);
}
int count(length)
{
struct node *ptr=head;
length=0;
13
while(ptr!=NULL)
{
length++;
ptr=ptr->next;
}
return length;
}
int main() {
int n,*a;
insert(1);
insert(0);
insert(1);
insert(0);
insert(1);
insert(1);
printList();
printf("\nDe la care nod incepem schimbarea? "); scanf("%d",&n);
interschimbare(n);
printf("\n");
printList();
printf("\n");
printf("\nNumarul de noduri in lista este %d",count());
printf("\n\nLista transformata in vector:\n ");
transformare();
return 0;
}
14