Sunteți pe pagina 1din 6

No. var.

10

4.1 Să se elaboreza un program, care va efectua concatenarea a două liste înlănțuite de


simboluri. Programul trebuie să includă funcția căreia, în calitate de parametri, i se transmit
pointerii spre două liste și aceasta unește cea de-a doua listă la prima.

#include <stdio.h>

#include <stdlib.h>

struct node

char simbol;

struct node *next;

};

void afisare(struct node *head)

if(head == NULL)

printf("NULL\n");

else

printf("%c\n", head -> simbol);

afisare(head->next);

void concatenate(struct node *a,struct node *b)

{
if( a != NULL && b!= NULL )

if (a->next == NULL)

a->next = b;

else

concatenate(a->next,b);

int main()

struct node *prev,*a, *b, *p;

int n,i;

printf ("numarul de elemente in lista a:");

scanf("%d",&n);

a=NULL;

for(i=0;i<n;i++)

p=malloc(sizeof(struct node));

scanf(" %c",&p->simbol);

p->next=NULL;

if(a==NULL)

a=p;

else

prev->next=p;

prev=p;

}
printf ("numarul de elemente in lista b:");

scanf("%d",&n);

b=NULL;

for(i=0;i<n;i++)

p=malloc(sizeof(struct node));

scanf(" %c",&p->simbol);

p->next=NULL;

if(b==NULL)

b=p;

else

prev->next=p;

prev=p;

concatenate(a,b);

printf("lista finala:");

afisare(a);

return 0;

4.10 Să se elaboreze un program , care va efectua compararea a două stive, elementele cărora
sunt numere întregi. Perechile de elemente ce nu coincid se vor afișa pe ecran.

#include <stdio.h>

#include <stdlib.h>

struct Lista {

int numar;
struct Lista* next;

};

void adauga(struct Lista **head, int n) {

if(*head==NULL) {

struct Lista* primul = (struct Lista*)malloc(sizeof(struct Lista));

primul->numar = n;

primul->next = NULL;

*head = primul;

} else {

struct Lista* curent = *head;

while(curent->next != NULL) {

curent = curent->next;

curent->next = (struct Lista*)malloc(sizeof(struct Lista));

curent->next->numar = n;

curent->next->next = NULL;

void afiseaza(struct Lista* head) {

while(head) {

printf("%d ", head->numar);

head = head->next;

}
void compara(struct Lista* head1, struct Lista* head2) {

while(head1) {

if(head1->numar != head2->numar)

printf("%d si %d nu coincid \n", head1->numar, head2->numar);

head1 = head1->next;

head2 = head2->next;

int main()

int N;

printf("N = ");

scanf("%d", &N);

struct List* head1 = NULL;

struct List* head2 = NULL;

printf("Prima lista: \n");

for(int i = 0; i < N; i++) {

int val;

scanf("%d", &val);

adauga(&head1, val);

printf("A doua lista: \n");

for(int i = 0; i < N; i++) {


int val;

scanf("%d", &val);

adauga(&head2, val);

compara(head1, head2);

Conclusion :
C est un langage de programmation de haut niveau. Pour utiliser ce langage
on doit posséder des connaissances nécessaires, en particulier, l’utilisation de le
fonction «if » et de le cycle « for » , et aussi l’utilisation de utilisation de
structures et de pointeurs et de structures de données.
En pratique, nous avons vu que C n’est pas seulement un langage difficile à
bien maîtriser, c’est aussi un langage difficile à bien implanter.
Au bout du compte, on peut dit que l'efficacité d'utilisation de langage C
directement dépend de connaissances reçues dans le cours des leçons et
compréhension de la fonction de du programme.

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