• Tidak ada hasil yang ditemukan

antrian2.pas 1 uses crt;

Dalam dokumen Modul Struktur Data Genap 2011.docx (Halaman 30-50)

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.1

16 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

1

uses wincrt;

2 3

type Tree=^Simpul;

4

Simpul = record

5

Info:char;

6

Kiri, Kanan:Tree

7

end;

8 9

var

10

myTree: tree;

11 12

{

13

Fungsi untuk mengalokasikan sebuah simpul baru

14

Informasi disimpan dalam Hrf

15

}

Dalam dokumen Modul Struktur Data Genap 2011.docx (Halaman 30-50)

Dokumen terkait