-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpilha.c
98 lines (88 loc) · 1.41 KB
/
pilha.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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include<stdio.h>
#include<stdlib.h>
typedef struct no{
int chave;
//campos....
struct no *prox;
}TNo;
TNo *alocaNo(int k)
{
TNo *novo;
novo = (TNo *)malloc(sizeof(TNo));
if (novo == NULL) return NULL;
novo->chave = k;
novo->prox = NULL;
return novo; //devolve o endere�o do n� para a main() / algu�m??
}
void insereInicio(int k,TNo **paux) //push
{
TNo *novo;
novo = alocaNo(k);
novo->prox = *paux;
*paux = novo;
}
void imprimeLista(TNo *paux)//imprime pilha
{
while(paux!=NULL)
{
printf("\n%d", paux->chave);
paux = paux->prox;
}
}
void removeInicio(TNo **paux)//pop
{
TNo *aux= *paux;
if(*paux == NULL)
{
printf("\nLista vazia");
return ;
}
if((*paux)->prox!=NULL)
{
*paux = (*paux)->prox;
free(aux);
// return paux;
}
else
{
free(aux);
*paux=NULL;
return ;
}
}
int main()
{
TNo *inicio=NULL, *final=NULL;
int op=1,chave;
while(op!=4)
{
printf("\n1 - Insere");
printf("\n2 - Retira");
printf("\n3 - Imprime");
scanf("%d",&op);
switch(op)
{
case 1:
{
{
printf("\nInforme valor:");
scanf("%d",&chave);
insereInicio(chave,&inicio);
}break;
case 2:
{
if(inicio==NULL)
printf("\nLista vazia!");
else
{
removeInicio(&inicio);
}
}break;
case 3:
{
imprimeLista(inicio);
}break;
}
}
}
}