-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path2Q1.c
74 lines (63 loc) · 1.14 KB
/
2Q1.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct lista {
int x;
struct lista* prox;
};
typedef struct lista Lista;
struct pilha {
Lista* prim;
};
typedef struct pilha Pilha;
Pilha* pilha_cria() {
Pilha* p=(Pilha*)malloc(sizeof(Pilha));
p->prim = NULL;
return p;
}
void pilha_insere (Pilha* p, float dado) {
Lista* n = (Lista*)malloc(sizeof(Lista));
n -> x = dado;
n -> prox = p -> prim;
p -> prim = n;
}
int pilha_libera (Pilha*p) {
Lista *q, *t;
q = p->prim;
while (q != NULL) {
t = q->prox;
free(q);
q=t;
}
free(p);
}
void pilha_imprime(Pilha*p) {
Lista*q;
if (p != NULL)
for (q=p-> prim;q!=NULL;q=q->prox)
printf ("Termo: %d \n", q->x);
else
printf ("\nPilha vazia\n\n");
}
int main () {
Pilha*p;
p=pilha_cria();
int i,j;
int mat[4][4];
for(i=0;i<4;i++) {
for (j=0;j<4;j++) {
printf("Entre com o valor de Matriz[%d][%d]: ",i,j);
scanf("%d\n",&mat[i][j]);
if(i+j>3) {
pilha_insere(p,mat[i][j]);}
}
}
printf("\n***Matriz inserida***\n");
for(i=0;i<4;i++) {
for (j=0;j<4;j++) {
printf(" %d \t",mat[i][j]);}
printf("\n");
}
pilha_imprime(p);
pilha_libera(p);
}