2 {**
3 * modifikasi dari Wahid,2004. Dasar-Dasar Algoritma & 4 * Pemrograman. Yogyakarta: Andi. pp. 318-21.
5 * program mensimulasikan manipulasi terhadap sebuah queue 6 *
7 * Muhammad Jazman
8 * Friday, 29 October 2010 10:01:54 AM 9
10
11 NEW: Add Load and Save to File 12 *} 13 const 14 separator = ' '; 15 type 16 element_type = integer; 17 cell_ptr = ^cell; 18 cell = record 19 data:element_type; 20 next: cell_ptr; 21 end; 22 queue = record
23 head, tail: cell_ptr;
24 end;
25 26 {**
Daftar Isi: <Contents
27 * Prosedur untuk menginisialisasi Queue 28 * perhatikan penggunaan var q,
29 * artinya: q dilakukan pass-by-reference.
30 * perubahan terhadap q di sini akan mengubah q di 31 * induk yang memanggilnya.
32 *}
33 procedure initialise ( var q: queue);
34 begin 35 q.head := nil; 36 q.tail := nil; 37 end; 38 39 {**
40 * menghasilkan true jika queue input kita kosong 41 *}
42 function is_empty(q:queue):boolean; 43 begin
44 is_empty := (q.head = nil) and (q.tail=nil);
45 end;
46 47 {**
48 * menambahkan new_element ke queue q 49 *}
50 procedure enqueue(var q:queue; new_element:element_type);
51 var p: cell_ptr;
52 begin
53 new(p);{alokasikan memori untuk cell baru} 54 p^.data := new_element;{cell.data}
55 p^.next := nil;{akan diletakkan di belakang} 56 if is_empty(q) then
57 begin
58 q.head:=p; {q.head adalah cell ini} 59 q.tail:=p;
60 end
61 else {queue sudah terisi} 62 begin 63 q.tail^.next := p; 64 q.tail := p; 65 end; 66 end; 67 68 {** 69 * mengurangi antrian
70 * mengurangi antrian artinya menghapus cell head kita 71 *}
72 procedure dequeue(var q:queue);
73 var
Daftar Isi: <Contents
75 {p adalah temporary cell, untuk menyimpan pointer ke 76 cell yang ingin dibuang}
77 begin
78 if not is_empty(q) then 79 begin
80 p := q.head;{}
81 q.head := q.head^.next;
82
83 {check apakah karena ini queue kita jadi kosong} 84 if q.head = nil then q.tail:=nil;
85 dispose(p);{hilangkan alokasi memori untuk cell tadi} 86 end
87 else
88 {empty queue}
89 writeln('Error: Queue kosong');
90 end;
91
92 {prosedur untuk menampilkan urutan queue ke layar} 93 procedure display_queue(q:queue);
94 var temp_cell_ptr:cell_ptr;
95 begin
96 if is_empty(q) then writeln('Queue kosong')
97 else 98 begin
99 temp_cell_ptr := q.head;{mulai dari head to tail} 100 while temp_cell_ptr <> nil do
101 begin
102 data} write(temp_cell_ptr^.data,separator);{write our current cell 103 temp_cell_ptr := temp_cell_ptr^.next; {move forward}
104 end;
105 end;
106 end;
107
108 {** save our queue for further use} 109 procedure saveToFile(q:queue);
110 var 111 f: file of cell; 112 s: string; 113 temp_cell_ptr:cell_ptr; 114 temp_cell:cell; 115 begin
116 writeln('Input file name to save our Queue. ');
117 write('Warning: It will overwrite an existing file : ');
118 readln(s);
119 assign(F,s); { Associate it } 120 rewrite(F); { Create it }
Daftar Isi: <Contents
122 while temp_cell_ptr <> nil do 123 begin
124 temp_cell.data := temp_cell_ptr^.data;
125 temp_cell.next := temp_cell_ptr^.next;
126 write(f,temp_cell);{write our current cell data} 127 temp_cell_ptr := temp_cell_ptr^.next; {move forward} 128 end;
129 close(F);{close our file again} 130 end;
131
132 procedure loadFromFile(var q:queue);
133 var
134 s:string;{string to hold our file name} 135 f:file of cell;
136 {temp_cell_ptr:cell_ptr;} 137 temp_cell:cell;
138 begin
139 write('Input file name to read: '); readln(s);
140 assign(F,s); { Associate it }
141 reset(F); { reset pointer ke awal file} 142
143 {delete our current queue}
144 while not is_empty(q) do dequeue(q);
145
146 while not EOF(F) do 147 begin 148 read(F,temp_cell); 149 {temp_cell_ptr:=@temp_cell;} 150 enqueue(q,temp_cell.data); 151 end; 152 end; 153 154 155 {** cetak menu} 156 procedure cetak_menu; 157 var i:byte; 158 begin 159 clrscr;{bersihkan layar} 160 textbackground(7); 161 textcolor(9); 162 clrscr;{kasih background} 163 164 {baris1} 165 gotoxy(1,1);write(chr(201));
166 for i:=1 to 78 do write(chr(205));
167 write(chr(187));
168
Daftar Isi: <Contents
170 gotoxy(1,2);{kolom1 baris2} 171 write(chr(186));
172 gotoxy((80-23) div 2,2);textcolor(9+15);
173 write('PRAKTIKUM STRUKTUR DATA');textcolor(9);
174 gotoxy(80,2);write(chr(186)); 175 176 {baris3} 177 gotoxy(1,3);write(chr(186)); 178 gotoxy(80,3);write(chr(186)); 179 180 {baris4} 181 gotoxy(1,4);write(chr(200));
182 for i:=1 to 78 do write(chr(205));
183 write(chr(188));
184
185 writeln;
186 writeln('Menu');
187 writeln('A. ADD = Menambah Elemen');
188 writeln('D. DELL = Mengurangi Elemen');
189 writeln('V. VIEW = Isi Queue');
190 writeln('S. SAVE = Simpan ke dalam File');
191 writeln('L. LOAD = Load dari File');
192 writeln('X. eXIT = Keluar');
193 writeln;
194 end;
195
196 {main program} 197 var
198 x: element_type;{untuk menampung nilai baru} 199 q: queue; 200 i: integer; 201 stop:boolean; 202 pilihan:char; 203 begin 204 clrscr; 205 206 {initialise queue} 207 initialise(q); 208 stop:=false; 209 repeat 210
211 writeln('Press any key to display menu');
212 readkey;
213 cetak_menu;
214 write('Pilihan [A,D,V,S,L,X]: ');
215 repeat
216 pilihan:=readkey;
Daftar Isi: <Contents
218 {readln(pilihan);} 219
220 case upcase(pilihan) of
221 'A': begin
222 {menambah elemen} 223 clrscr;
224 writeln('Menambah Elemen');
225 write('Nilai yang ditambahkan: ');
226 readln(x);
227 enqueue(q,x);{masukkan x ke dalam queue}
228 antrian'); writeln('Nilai ',x,' telah dimasukkan ke dalam
229 end;
230 'D': begin
231 {mengurangi elemen} 232 clrscr;
233 writeln('Mengurangi Elemen');
234 dequeue(q);
235 writeln;
236 end;
237 'V': begin
238 clrscr;
239 writeln('Menampilkan Isi Queue');
240 display_queue(q);
241 writeln;
242 end;
243 'S': begin
244 clrscr;
245 writeln('Simpan ke dalam File');
246 saveToFile(q);
247 writeln;
248 end;
249 'L': begin
250 clrscr;
251 writeln('Load dari File');
252 loadFromFile(q);
253 writeln;
254 end;
255
256 'X': stop:=true;
257 end; {case of} 258 until (stop=true);
259
260 writeln;
261 normvideo;{normalkan kembali layar} 262 clrscr;
263 writeln('Terimakasih telah menggunakan program ini.');
Daftar Isi: <Contents 265 readkey; 266 end.
antrian3.pas
1 uses crt; 2 {**3 * modifikasi dari Wahid,2004. Dasar-Dasar Algoritma & 4 * Pemrograman. Yogyakarta: Andi. pp. 318-21.
5 * program mensimulasikan manipulasi terhadap sebuah queue 6 *
7 * Muhammad Jazman
8 * Friday, 29 October 2010 10:01:54 AM 9
10 NEW: queue file is a [file of element_type], to save. 11 12 *} 13 const 14 separator = ' '; 15 type 16 element_type = integer; 17 cell_ptr = ^cell; 18 cell = record 19 data:element_type; 20 next: cell_ptr; 21 end; 22 queue = record
23 head, tail: cell_ptr;
24 end;
25 26 {**
27 * Prosedur untuk menginisialisasi Queue 28 * perhatikan penggunaan var q,
29 * artinya: q dilakukan pass-by-reference.
30 * perubahan terhadap q di sini akan mengubah q di 31 * induk yang memanggilnya.
32 *}
33 procedure initialise ( var q: queue);
34 begin 35 q.head := nil; 36 q.tail := nil; 37 end; 38 39 {**
40 * menghasilkan true jika queue input kita kosong 41 *}
42 function is_empty(q:queue):boolean; 43 begin
Daftar Isi: <Contents
44 is_empty := (q.head = nil) and (q.tail=nil);
45 end;
46 47 {**
48 * menambahkan new_element ke queue q 49 *}
50 procedure enqueue(var q:queue; new_element:element_type);
51 var p: cell_ptr;
52 begin
53 new(p);{alokasikan memori untuk cell baru} 54 p^.data := new_element;{cell.data}
55 p^.next := nil;{akan diletakkan di belakang} 56 if is_empty(q) then
57 begin
58 q.head:=p; {q.head adalah cell ini} 59 q.tail:=p;
60 end
61 else {queue sudah terisi} 62 begin 63 q.tail^.next := p; 64 q.tail := p; 65 end; 66 end; 67 68 {** 69 * mengurangi antrian
70 * mengurangi antrian artinya menghapus cell head kita 71 *}
72 procedure dequeue(var q:queue);
73 var
74 p: cell_ptr;
75 {p adalah temporary cell, untuk menyimpan pointer ke 76 cell yang ingin dibuang}
77 begin
78 if not is_empty(q) then 79 begin
80 p := q.head;{}
81 q.head := q.head^.next;
82
83 {check apakah karena ini queue kita jadi kosong} 84 if q.head = nil then q.tail:=nil;
85 dispose(p);{hilangkan alokasi memori untuk cell tadi} 86 end
87 else
88 {empty queue}
89 writeln('Error: Queue kosong');
90 end;
Daftar Isi: <Contents
92 {prosedur untuk menampilkan urutan queue ke layar} 93 procedure display_queue(q:queue);
94 var temp_cell_ptr:cell_ptr;
95 begin
96 if is_empty(q) then writeln('Queue kosong')
97 else 98 begin
99 temp_cell_ptr := q.head;{mulai dari head to tail} 100 while temp_cell_ptr <> nil do
101 begin
102 data} write(temp_cell_ptr^.data,separator);{write our current cell 103 temp_cell_ptr := temp_cell_ptr^.next; {move forward}
104 end;
105 end;
106 end;
107
108 {** save our queue for further use} 109 procedure saveToFile(q:queue);
110 var
111 f: file of element_type;
112 s: string;
113 temp_cell_ptr:cell_ptr;
114 begin
115 writeln('Input file name to save our Queue. ');
116 write('Warning: It will overwrite an existing file : ');
117 readln(s);
118 assign(F,s); { Associate it } 119 rewrite(F); { Create it }
120 temp_cell_ptr := q.head;{mulai dari head to tail} 121 while temp_cell_ptr <> nil do
122 begin
123 write(f,temp_cell_ptr^.data);{write our current cell data} 124 temp_cell_ptr := temp_cell_ptr^.next; {move forward}
125 end;
126 close(F);{close our file again} 127 end;
128
129 procedure loadFromFile(var q:queue);
130 var
131 s:string;{string to hold our file name} 132 f:file of element_type;
133 data:element_type;
134 begin
135 write('Input file name to read: '); readln(s);
136 assign(F,s); { Associate it }
137 reset(F); { reset pointer ke awal file} 138
Daftar Isi: <Contents
139 {delete our current queue}
140 while not is_empty(q) do dequeue(q);
141
142 while not EOF(F) do 143 begin 144 read(F,data); 145 enqueue(q,data); 146 end; 147 end; 148 149 150 {** cetak menu} 151 procedure cetak_menu; 152 var i:byte; 153 begin 154 clrscr;{bersihkan layar} 155 textbackground(7); 156 textcolor(9); 157 clrscr;{kasih background} 158 159 {baris1} 160 gotoxy(1,1);write(chr(201));
161 for i:=1 to 78 do write(chr(205));
162 write(chr(187));
163
164 {baris2}
165 gotoxy(1,2);{kolom1 baris2} 166 write(chr(186));
167 gotoxy((80-23) div 2,2);textcolor(9+15);
168 write('PRAKTIKUM STRUKTUR DATA');textcolor(9);
169 gotoxy(80,2);write(chr(186)); 170 171 {baris3} 172 gotoxy(1,3);write(chr(186)); 173 gotoxy(80,3);write(chr(186)); 174 175 {baris4} 176 gotoxy(1,4);write(chr(200));
177 for i:=1 to 78 do write(chr(205));
178 write(chr(188));
179
180 writeln;
181 writeln('Menu');
182 writeln('A. ADD = Menambah Elemen');
183 writeln('D. DELL = Mengurangi Elemen');
184 writeln('V. VIEW = Isi Queue');
185 writeln('S. SAVE = Simpan ke dalam File');
Daftar Isi: <Contents
187 writeln('X. eXIT = Keluar');
188 writeln;
189 end;
190
191 {main program} 192 var
193 x: element_type;{untuk menampung nilai baru} 194 q: queue; 195 i: integer; 196 stop:boolean; 197 pilihan:char; 198 begin 199 clrscr; 200 201 {initialise queue} 202 initialise(q); 203 stop:=false; 204 repeat 205
206 writeln('Press any key to display menu');
207 readkey;
208 cetak_menu;
209 write('Pilihan [A,D,V,S,L,X]: ');
210 repeat
211 pilihan:=readkey;
212 until (upcase(pilihan) in ['A','D','V','S','L','X']);
213 {readln(pilihan);} 214
215 case upcase(pilihan) of
216 'A': begin
217 {menambah elemen} 218 clrscr;
219 writeln('Menambah Elemen');
220 write('Nilai yang ditambahkan: ');
221 readln(x);
222 enqueue(q,x);{masukkan x ke dalam queue}
223 antrian'); writeln('Nilai ',x,' telah dimasukkan ke dalam
224 end;
225 'D': begin
226 {mengurangi elemen} 227 clrscr;
228 writeln('Mengurangi Elemen');
229 dequeue(q);
230 writeln;
231 end;
232 'V': begin
Daftar Isi: <Contents
234 writeln('Menampilkan Isi Queue');
235 display_queue(q);
236 writeln;
237 end;
238 'S': begin
239 clrscr;
240 writeln('Simpan ke dalam File');
241 saveToFile(q);
242 writeln;
243 end;
244 'L': begin
245 clrscr;
246 writeln('Load dari File');
247 loadFromFile(q);
248 writeln;
249 end;
250
251 'X': stop:=true;
252 end; {case of} 253 until (stop=true);
254
255 writeln;
256 normvideo;{normalkan kembali layar} 257 clrscr;
258 writeln('Terimakasih telah menggunakan program ini.');
259 writeln('Press any key to terminate this program ...');
260 readkey;
Daftar Isi: <Contents
Linked List (Senarai Berantai)
linkedls.pas
1 uses crt; 2 type 3 simpul=^data; 4 data=record 5 info:char; 6 berikut:simpul; 7 end; 8 9 var 10 elemen:char; 11 awal,akhir,baru:simpul; 12 13 14 { 15 program 5.116 Prosedur untuk menambah simpul.
17 Simpul baru diletakkan di akhir senarai berantai 18 }
19 procedure tambah_belakang (var awal, akhir: simpul; elemen:char);
20 var baru:simpul;
21 begin
22 new(baru);{alokasikan memori} 23 baru^.info:=elemen;
24 {jika awal masih kosong}
25 if awal = nil then awal:= baru
26 else 27 akhir^.berikut:=baru; 28 29 akhir:=baru; 30 akhir^.berikut:=nil 31 end; 32 33 34 { 35 program 5.2
36 prosedur untuk menambah simpul.
37 simpul baru diletakkan di awal senarai berantai 38 }
39 procedure tambah_depan(var awal,akhir:simpul;elemen:char);
40 var
41 baru:simpul;
Daftar Isi: <Contents 43 new(baru);
44 baru^.info:=elemen;
45 if awal=nil then 46 akhir:= baru 47 else 48 baru^.berikut:=awal; 49 awal:=baru; 50 end; 51 52 { 53 program 5.3
54 prosedur untuk menambah simpul di tengah senarai berantai 55 }
56 procedure tambah_tengah (var awal,akhir:simpul; elemen:char);
57 var
58 baru,bantu:simpul;
59 begin
60 new(baru);
61 baru^.info:=elemen;
62 if awal = nil then {senarai masih kosong} 63 begin 64 awal:=baru; 65 akhir:=baru 66 end 67 else 68 begin
69 {mencari lokasi yang sesuai} 70 bantu:=awal;
71 while elemen>baru^.berikut^.info do 72 bantu:=bantu^.berikut;
73
74 {menyisipkan simpul baru} 75 baru^.berikut:=bantu^.berikut; 76 bantu^.berikut:=baru; 77 end; 78 end; 79 80 { 81 program 5.4
82 prosedur menghapus simpul 83 }
84 procedure hapus_simpul(var awal,akhir:simpul;elemen:char);
85 var bantu,hapus:simpul;
86 begin
87 if awal=nil then {senarai masih kosong}
88 writeln('senarai masih kosong, tidak dapat menghapus')
89 else if awal^.info = elemen then 90 {simpul pertama dihapus}
Daftar Isi: <Contents 91 begin 92 hapus:=awal; 93 awal:=hapus^.berikut; 94 dispose(hapus) 95 end 96 else
97 {menghapus simpul tengah atau terakhir} 98 begin
99 bantu:=awal;
100 {mencari simpul yang akan dihapus}
101 while (elemen<>bantu^.info) and (bantu^.berikut <> nil) do 102 bantu:=bantu^.berikut;
103
104 hapus:=bantu^.berikut;
105 if hapus<>nil then
106 {simpul yang akan dihapus ketemu} 107 begin
108 if hapus <> akhir then 109 {simpul tengah dihapus}
110 bantu^.berikut:=hapus^.berikut
111 else
112 {simpul terakhir dihapus} 113 begin 114 akhir:=bantu; 115 akhir^.berikut:=nil 116 end; 117 dispose(hapus) 118 end 119 120 else
121 {simpul yang akan dihapus tidak ketemu}
122 writeln('Simpul yang akan dihapus tidak ada')
123 end 124 end; 125 126 127 { 128 program 5.5
129 prosedur untuk membaca senarai dari kiri ke kanan (maju) 130 }
131 procedure baca_maju (awal,akhir:simpul);
132 var 133 bantu:simpul; 134 begin 135 bantu:=awal; 136 repeat 137 write(bantu^.info:2); 138 bantu:=bantu^.berikut
Daftar Isi: <Contents 139 until bantu=nil; 140 writeln 141 end; 142 143 144 { 145 Program 5.6
146 Prosedur untuk membalik pointer 147 }
148 procedure balik_pointer(var awal, akhir: simpul);
149 var
150 bantu, bantu1: simpul;
151 begin
152 bantu:= awal;
153 awal:= akhir;
154
155 {proses membalik pointer} 156 repeat
157 bantu1 := bantu;
158
159 akhir}{mencari simpul sebelum simpul yang ditunjuk oleh pointer 160 while bantu1^.berikut <> akhir do
161 bantu1 := bantu1^.berikut;
162
163 akhir^.berikut:=bantu1;
164 akhir:= bantu1;
165 until akhir = bantu;
166 akhir^.berikut:= nil;
167 end;
168 169 {
170 program 5.7
171 prosedur membaca senarai dari kanan ke kiri 172 menggunakan cara pembacaan secara rekursif 173 }
174 procedure mundur (bantu:simpul);
175 begin
176 if bantu <> nil then 177 begin 178 mundur(bantu^.berikut); 179 write(bantu^.info:2) 180 end; 181 end; 182 183 { 184 program 5.8
Daftar Isi: <Contents
186 jiwa fungsi bernilai 'true' berarti data ketemu 187 }
188 function ada_data (elemen:char; awal:simpul):boolean; 189 var
190 ketemu:boolean; 191 begin
192 ketemu:=false;
193 repeat
194 if awal^.info = elemen then 195 ketemu := true
196 else
197 awal := awal^.berikut;
198 until ketemu or (awal = nil);
199 ada_data := ketemu
200 end;
201 202 {
203 program 5.9
204 Fungsi untuk mencari data pada senarai terurutkan 205 Jika fungsi bernilai 'true' bearti data ketemu 206 }
207 function ada_data1 (awal:simpul; elemen:char):boolean; 208 var ketemu:boolean;
209 begin
210 ketemu:=false;
211 repeat
212 if awal^.info = elemen then 213 {data ditemukan}
214 ketemu := true 215 else
216 if awal^.info < elemen then 217 awal := awal^.berikut
218 else
219 {tidak ditemukan} 220 awal:=nil
221 until ketemu or (awal=nil);
222 223 ada_data1:=ketemu 224 end; 225 226 { 227 program 5.10
228 prosedur inisialisasi senarai berantai 229 untuk membentuk simpul kepala
230 }
231 procedure awalan(var awal:simpul);
232 begin
Daftar Isi: <Contents
234 {karena belum punya simpul, ini adalah simpul terakhir} 235 awal^.berikut := nil; 236 end; 237 238 239 240 {main program} 241 begin 242 clrscr;
243 writeln('Program untuk menguji Linked List');
244 writeln;
245 writeln('Nilai awal^.info:=',awal^.info);
246 writeln('Nilai akhir^.info:=',akhir^.info);
247 writeln;
248
249 awalan(awal);
250 writeln('awalan(awal);');
251 writeln('Nilai awal^.info:=',awal^.info);
252 writeln('Nilai akhir^.info:=',akhir^.info);
253 writeln;
254
255 tambah_belakang(awal,akhir,'a');
256 writeln('tambah_belakang(awal,akhir,''a'');');
257 writeln('Nilai awal^.info:=',awal^.info);
258 writeln('Nilai akhir^.info:=',akhir^.info);
259 writeln;
260
261 tambah_belakang(awal,akhir,'b');
262 tambah_belakang(awal,akhir,'c');
263 tambah_belakang(awal,akhir,'d');
264 tambah_belakang(awal,akhir,'e');
265 tambah_belakang(awal,akhir,'f');
266 writeln('baca_maju(awal,akhir);');
267 baca_maju(awal,akhir);
268 writeln;
269
270 awal:=nil;akhir:=nil;
271 writeln('awal:=nil;akhir:=nil;');
272 writeln('Nilai awal^.info:=',awal^.info);
273 writeln('Nilai akhir^.info:=',akhir^.info);
274 writeln;
275
276 tambah_belakang(awal,akhir,'a');
277 writeln('tambah_belakang(awal,akhir,''a'');');
278 writeln('Nilai awal^.info:=',awal^.info);
279 writeln('Nilai akhir^.info:=',akhir^.info);
280 writeln;
Daftar Isi: <Contents
282 tambah_belakang(awal,akhir,'b');
283 tambah_belakang(awal,akhir,'c');
284 tambah_belakang(awal,akhir,'d');
285 tambah_belakang(awal,akhir,'e');
286 tambah_belakang(awal,akhir,'f');
287 writeln('baca_maju(awal,akhir);');
288 baca_maju(awal,akhir);
289 writeln;
290
291 end.
dll.pas
1 {Chapter 3 -- Double Linked List} 2 type
3 pDbllist = ^tDbllist;
4 tDbllist = record
5 name : string[30];
6 address : string[40];
7 prev, next : pDbllist;
8 end;
9 10
11 procedure add(var tail : pDbllist; content : tDbllist);{: pDbllist;} 12 var cur : pDbllist;
13 begin 14 new(cur); 15 cur^.name:=content.name; 16 cur^.address:=content.address; 17 cur^.prev:=tail; 18 cur^.next:=nil; 19 tail^.next:=cur; 20 end; 21
22 procedure display(head : pDbllist);
23 var cur : pDbllist;
24 begin
25 cur:=head;
26 while cur<>nil do 27 begin
28 writeln(cur^.name:35,cur^.address);
29 cur:=cur^.next;
30 end;
31 end;
32 33
34 procedure delete(whattodel : pDbllist);
Daftar Isi: <Contents 36 begin
37 cur:=whattodel;
38 if cur=nil then exit;
39 bef:=cur^.prev;
40 aft:=cur^.next;
41 in the middle }if (bef<>nil) and (aft<>nil) then { The wanna be deleted item is 42 begin
43 bef^.next:=aft;
44 aft^.prev:=bef;
45 end
46 else
47 at the front }if (bef=nil) and (aft<>nil) then { The wanna be deleted item is 48 aft^.prev:=nil
49 else 50
51 is at the end }if (bef<>nil) and (aft=nil) then { The wanna be deleted item 52 bef^.next:=nil;
53
54 dispose(cur);
55 end;
56
57 procedure insert(afterwhat : pDbllist; content : tDbllist);
58 var cur, bef : pDbllist;
59 begin
60 list }if afterwhat=nil then exit; { You can't insert item in an empty 61 inserted item }new(cur); { Create node for the wanna be 62 cur^.name:=content.name; { Then fill it with its data } 63 cur^.address:=content.address;
64
65 bef:=afterwhat;
66 cur^.prev:=bef; { Cur is after bef, so bef is before cur } 67 cur^.next:=bef^.next; { Take over the next item ** }
68 bef^.next:=cur; { Link the inserted item after the node } 69 end;
70
71 {main} 72 begin
Daftar Isi: <Contents
Tree (Pohon Keluarga)
tree.pas
1uses wincrt;
2 3type Tree=^Simpul;
4Simpul = record
5Info:char;
6Kiri, Kanan:Tree
7end;
8 9var
10myTree: tree;
11 12{
13
Fungsi untuk mengalokasikan sebuah simpul baru
14
Informasi disimpan dalam Hrf
15