07/12/2016 10:11:08E:DocumentsAlgoritmos3. Pilhas e FilasFilafila_dinamica_certo.pas
1: //ELAINE CECÍLIA GATTO
2: //29/08/2016
3:
4: program fila_dinamica;
5: uses wincrt, crt;
6:
7: //DECLARANDO UM NOVO TIPO
8: type
9: tipo_dado = integer;
10: tipo_fila = ^tipo_no;
11: tipo_no = record
12: dado: tipo_dado;
13: proximo: tipo_fila;
14: end;
15:
16: var
17: opcao, x: integer;
18: fila, pAux1, pAux2: tipo_fila;
19:
20: Procedure Cria_Fila(var fila:tipo_fila);
21: begin
22: fila := Nil;
23: pAux1 := Nil;
24: pAux2 := NIl;
25: writeln('Fila Criada com Sucesso!');
26: end;
27:
28:
29: Function Vazia(fila: tipo_fila): boolean;
30: begin
31: Vazia := ( fila = Nil );
32: end;
33:
34:
35: //REMOVER DO INCIO
36: function Dequeue():tipo_dado;
37: begin
38: writeln(' ===== REMOVENDO DO INICIO DA FILA ====== ');
39: //verifica se a lista está vazia
40: if(fila = nil)then
41: begin
42: writeln(' A fila está vazia! ');
43: end
44: else
45: begin
46: //remove se a lista tem apenas um elemento
47: if(fila^.proximo = fila)then
48: begin
49: Dequeue := fila^.dado; //remove o elemento
50: dispose(fila); //desaloca memória
51: fila := nil; //inicio da lista aponta para NIL
52: end
53: else
54: begin
55: new(pAux2); //aloca memória
56: pAux2:=fila; //aux2 aponta para o inicio da lista
57: while(pAux2^.proximo<>fila)do
58: begin
59: //aux2 vai para o próximo elemento da lista
60: pAux2 := pAux2^.proximo;
61: end;
62: new(pAux1); //aloca memória
63: pAux1 := fila; //aux1 aponta para o inicio da lista
64: Dequeue := pAux1^.dado; //remove o elemento da lista
65: fila := fila^.proximo; //inicio da lista aponta para o próximo
66: //o próximo de aux2 aponta para o inicio da lista
1/3
07/12/2016 10:11:08E:DocumentsAlgoritmos3. Pilhas e FilasFilafila_dinamica_certo.pas
67: pAux2^.proximo := fila;
68: dispose(pAux1); //libera memória
69: pAux1 := nil; //aux1 aponta para NIL
70: end;
71: end;
72: writeln(' Elemento removido com sucesso! ');
73: end;
74:
75: //INSERIR NO FIM DA LISTA
76: procedure Enqueue();
77: begin
78: writeln(' ===== INSERINDO NO FINAL DA FILA ====== ');
79: write(' Digite um Elemento: ');
80: readln(x);
81: if(fila = nil)then
82: begin
83: new(fila); //aloca memória
84: fila^.dado := x; //aloca o novo elemento
85: fila^.proximo := fila; //aponta para o inicio da lista
86: end
87: else
88: begin
89: new(pAux2); //aloca memória
90: pAux2:=fila; //aux aponta para o inicio da lista
91: while(pAux2^.proximo<>fila)do
92: begin
93: pAux2 := pAux2^.proximo; //vai para o próximo elemento da lista
94: end;
95: new(pAux1); //aloca memória
96: //o próximo elemento de aux1 aponta para inicio da lista
97: pAux1^.proximo := fila;
98: pAux1^.dado := x; //aloca o novo elemento
99: //o próximo elemento de aux2 aponta para aux1
100: pAux2^.proximo := pAux1;
101: end;
102: writeln(' Elemento inserido com sucesso! ');
103: end;
104:
105:
106: Function Inicio(fila: tipo_fila): integer;
107: Begin
108: Inicio := fila^.dado;
109: end;
110:
111: //IMPRIMINDO A LISTA
112: procedure imprimir();
113: begin
114: if(fila = nil)then
115: begin
116: writeln('Fila vazia');
117: end
118: else
119: begin
120: pAux1:=fila;
121: while(pAux1^.proximo <> fila)do //imprimindo lista
122: begin
123: write(' Elemento : ');
124: writeln(pAux1^.dado);
125: pAux1 := pAux1^.proximo;
126: end; //while
127: write(' Elemento : ');
128: writeln(pAux1^.dado);
129: end; //if
130: end; //begin
131:
132:
2/3
07/12/2016 10:11:08E:DocumentsAlgoritmos3. Pilhas e FilasFilafila_dinamica_certo.pas
133:
134: //PROGRAMA PRINCIPAL
135: procedure menu;
136: begin
137: repeat
138: writeln(' MENU ');
139: writeln (' 1. Criar a Fila');
140: writeln (' 2. Enqueue ');
141: writeln (' 3. Dequeue ');
142: writeln (' 4. Retornar o Inicio da Fila ');
143: writeln (' 5. Imprimir a Fila ');
144: writeln (' 6. Verificar se a Fila está vazia ');
145: writeln (' 0. SAIR ');
146: writeln('');
147: write(' Digite a opcao desejada: ');
148: readln(opcao);
149: writeln('');
150:
151: Case opcao Of
152: 1 : Begin
153: Cria_Fila(fila);
154: writeln('');
155: end;
156: 2 : Begin
157: Enqueue();
158: writeln('');
159: end;
160: 3 : Begin
161: Dequeue();
162: writeln('');
163: end;
164: 4 : Begin
165: x := Inicio(fila);
166: writeln(' Inicio da Fila:', x);
167: writeln('');
168: end;
169: 5 : Begin
170: imprimir();
171: writeln('');
172: end;
173: 6 : Begin
174: Vazia(fila);
175: writeln('');
176: end;
177:
178: Else Writeln (' inválido ');
179: End;
180: until opcao = 0;
181: writeln('');
182: end;
183:
184:
185: //PROGRAMA PRINCIPAL
186: begin
187: menu();
188: end.
3/3

Fila circular dinamica

  • 1.
    07/12/2016 10:11:08E:DocumentsAlgoritmos3. Pilhase FilasFilafila_dinamica_certo.pas 1: //ELAINE CECÍLIA GATTO 2: //29/08/2016 3: 4: program fila_dinamica; 5: uses wincrt, crt; 6: 7: //DECLARANDO UM NOVO TIPO 8: type 9: tipo_dado = integer; 10: tipo_fila = ^tipo_no; 11: tipo_no = record 12: dado: tipo_dado; 13: proximo: tipo_fila; 14: end; 15: 16: var 17: opcao, x: integer; 18: fila, pAux1, pAux2: tipo_fila; 19: 20: Procedure Cria_Fila(var fila:tipo_fila); 21: begin 22: fila := Nil; 23: pAux1 := Nil; 24: pAux2 := NIl; 25: writeln('Fila Criada com Sucesso!'); 26: end; 27: 28: 29: Function Vazia(fila: tipo_fila): boolean; 30: begin 31: Vazia := ( fila = Nil ); 32: end; 33: 34: 35: //REMOVER DO INCIO 36: function Dequeue():tipo_dado; 37: begin 38: writeln(' ===== REMOVENDO DO INICIO DA FILA ====== '); 39: //verifica se a lista está vazia 40: if(fila = nil)then 41: begin 42: writeln(' A fila está vazia! '); 43: end 44: else 45: begin 46: //remove se a lista tem apenas um elemento 47: if(fila^.proximo = fila)then 48: begin 49: Dequeue := fila^.dado; //remove o elemento 50: dispose(fila); //desaloca memória 51: fila := nil; //inicio da lista aponta para NIL 52: end 53: else 54: begin 55: new(pAux2); //aloca memória 56: pAux2:=fila; //aux2 aponta para o inicio da lista 57: while(pAux2^.proximo<>fila)do 58: begin 59: //aux2 vai para o próximo elemento da lista 60: pAux2 := pAux2^.proximo; 61: end; 62: new(pAux1); //aloca memória 63: pAux1 := fila; //aux1 aponta para o inicio da lista 64: Dequeue := pAux1^.dado; //remove o elemento da lista 65: fila := fila^.proximo; //inicio da lista aponta para o próximo 66: //o próximo de aux2 aponta para o inicio da lista 1/3
  • 2.
    07/12/2016 10:11:08E:DocumentsAlgoritmos3. Pilhase FilasFilafila_dinamica_certo.pas 67: pAux2^.proximo := fila; 68: dispose(pAux1); //libera memória 69: pAux1 := nil; //aux1 aponta para NIL 70: end; 71: end; 72: writeln(' Elemento removido com sucesso! '); 73: end; 74: 75: //INSERIR NO FIM DA LISTA 76: procedure Enqueue(); 77: begin 78: writeln(' ===== INSERINDO NO FINAL DA FILA ====== '); 79: write(' Digite um Elemento: '); 80: readln(x); 81: if(fila = nil)then 82: begin 83: new(fila); //aloca memória 84: fila^.dado := x; //aloca o novo elemento 85: fila^.proximo := fila; //aponta para o inicio da lista 86: end 87: else 88: begin 89: new(pAux2); //aloca memória 90: pAux2:=fila; //aux aponta para o inicio da lista 91: while(pAux2^.proximo<>fila)do 92: begin 93: pAux2 := pAux2^.proximo; //vai para o próximo elemento da lista 94: end; 95: new(pAux1); //aloca memória 96: //o próximo elemento de aux1 aponta para inicio da lista 97: pAux1^.proximo := fila; 98: pAux1^.dado := x; //aloca o novo elemento 99: //o próximo elemento de aux2 aponta para aux1 100: pAux2^.proximo := pAux1; 101: end; 102: writeln(' Elemento inserido com sucesso! '); 103: end; 104: 105: 106: Function Inicio(fila: tipo_fila): integer; 107: Begin 108: Inicio := fila^.dado; 109: end; 110: 111: //IMPRIMINDO A LISTA 112: procedure imprimir(); 113: begin 114: if(fila = nil)then 115: begin 116: writeln('Fila vazia'); 117: end 118: else 119: begin 120: pAux1:=fila; 121: while(pAux1^.proximo <> fila)do //imprimindo lista 122: begin 123: write(' Elemento : '); 124: writeln(pAux1^.dado); 125: pAux1 := pAux1^.proximo; 126: end; //while 127: write(' Elemento : '); 128: writeln(pAux1^.dado); 129: end; //if 130: end; //begin 131: 132: 2/3
  • 3.
    07/12/2016 10:11:08E:DocumentsAlgoritmos3. Pilhase FilasFilafila_dinamica_certo.pas 133: 134: //PROGRAMA PRINCIPAL 135: procedure menu; 136: begin 137: repeat 138: writeln(' MENU '); 139: writeln (' 1. Criar a Fila'); 140: writeln (' 2. Enqueue '); 141: writeln (' 3. Dequeue '); 142: writeln (' 4. Retornar o Inicio da Fila '); 143: writeln (' 5. Imprimir a Fila '); 144: writeln (' 6. Verificar se a Fila está vazia '); 145: writeln (' 0. SAIR '); 146: writeln(''); 147: write(' Digite a opcao desejada: '); 148: readln(opcao); 149: writeln(''); 150: 151: Case opcao Of 152: 1 : Begin 153: Cria_Fila(fila); 154: writeln(''); 155: end; 156: 2 : Begin 157: Enqueue(); 158: writeln(''); 159: end; 160: 3 : Begin 161: Dequeue(); 162: writeln(''); 163: end; 164: 4 : Begin 165: x := Inicio(fila); 166: writeln(' Inicio da Fila:', x); 167: writeln(''); 168: end; 169: 5 : Begin 170: imprimir(); 171: writeln(''); 172: end; 173: 6 : Begin 174: Vazia(fila); 175: writeln(''); 176: end; 177: 178: Else Writeln (' inválido '); 179: End; 180: until opcao = 0; 181: writeln(''); 182: end; 183: 184: 185: //PROGRAMA PRINCIPAL 186: begin 187: menu(); 188: end. 3/3